home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60c / INTERRUP.M < prev    next >
Text File  |  1999-01-03  |  316KB  |  8,544 lines

  1. Interrupt List, part 13 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------V-2FAD00-----------------------------
  4. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  5.     AX = AD00h
  6. Return: AL = FFh if installed
  7.         BX = ??? (0100h for MS-DOS 3.3+)
  8. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  9.       subfunctions listed here
  10. SeeAlso: AX=AD01h"DISPLAY",AX=AD02h"DISPLAY"
  11. --------O-2FAD00-----------------------------
  12. INT 2F U - DR DOS 3.41-5.0, Novell DOS 7 KEYB - INSTALLATION CHECK
  13.     AX = AD00h
  14. Return: AX = FFFFh if installed
  15.     flags destroyed
  16. Note:    the Novell DOS 7 KEYB driver only checks AL to determine whether it
  17.       is already installed
  18. SeeAlso: AX=AD80h"Novell"
  19. --------V-2FAD01-----------------------------
  20. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  21.     AX = AD01h
  22.     BX = new code page (see #01757 at INT 21/AX=6602h)
  23. Return: CF clear if successful
  24.         AX = 0001h
  25.     CF set on error (unsupported code page)
  26.         AX = 0000h
  27. SeeAlso: AX=AD02h"DISPLAY"
  28. --------O-2FAD01-----------------------------
  29. INT 2F U - DR DOS 3.41,5.0 KEYB - GET CONFIGURATION
  30.     AX = AD01h
  31. Return: BX = current code page (see #01757 at INT 21/AX=6602h)
  32.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  33.     ES = resident code segment
  34. SeeAlso: AX=AD01h"Novell",AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
  35. --------O-2FAD01-----------------------------
  36. INT 2F U - Novell DOS 7 KEYB - GET/SET??? CONFIGURATION
  37.     AX = AD01h
  38.     CX = ??? (0000h)
  39. Return: AX = FFFFh if Novell DOS 7 KEYB installed
  40.     BX = current code page (see #01757 at INT 21/AX=6602h)
  41.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  42.     ES = resident code segment
  43. SeeAlso: AX=AD01h"DR DOS",AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
  44. --------V-2FAD02-----------------------------
  45. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  46.     AX = AD02h
  47. Return: CF set if code page never set
  48.         AX = 0001h
  49.         BX = FFFFh (assume first hardware code page)
  50.     CF clear if successful
  51.         BX = current code page (see #01757 at INT 21/AX=6602h)
  52. SeeAlso: AX=AD01h"DISPLAY",AX=AD03h
  53. --------O-2FAD02-----------------------------
  54. INT 2F U - Novell DOS 7 KEYB - ???
  55.     AX = AD02h
  56.     DX = ??? (0000h)
  57. Return: AX = FFFFh if installed
  58.     flags destroyed
  59. SeeAlso: AX=AD01h"KEYB"
  60. --------V-2FAD03-----------------------------
  61. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  62.     AX = AD03h
  63.     ES:DI -> buffer for code page information (see #02971)
  64.     CX = size of buffer in bytes
  65. Return: CF set if buffer too small
  66.     CF clear if successful
  67.         ES:DI buffer filled
  68. SeeAlso: AX=AD01h,AX=AD02h
  69.  
  70. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  71. Offset    Size    Description    (Table 02971)
  72.  00h    WORD    number of software code pages
  73.  02h    WORD    ??? (0003h)
  74.  04h    WORD    number of hardware code pages
  75.  06h  N WORDs    hardware code page numbers (see #01757 at INT 21/AX=6602h)
  76.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  77. --------V-2FAD04-----------------------------
  78. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  79.     AX = AD04h
  80.     ???
  81. Return: ???
  82. --------V-2FAD10-----------------------------
  83. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  84.     AX = AD10h
  85.     ???
  86. Return: AX = FFFFh
  87.     BX = ??? (0100h in PC-DOS 4.01)
  88. --------V-2FAD10-----------------------------
  89. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  90.     AX = AD10h
  91.     ???
  92. Return: CF clear if successful
  93.     CF set on error
  94. Note:    this function is a NOP if the active code page has never been set
  95.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  96. --------V-2FAD40-----------------------------
  97. INT 2F - DOS 4.0+ - ???
  98.     AX = AD40h
  99.     DX = ???
  100.     ???
  101. Return: ???
  102. Note:    called by PC-DOS 4.01 PRINT.COM
  103. --------K-2FAD80-----------------------------
  104. INT 2F u - MS-DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  105.     AX = AD80h
  106. Return: AL = FFh if installed
  107.         BX = version number (BH = major, BL = minor)
  108.         ES:DI -> internal data (see #02972)
  109.         AH destroyed (set to FFh by some implementations/versions)
  110. Notes:    MS-DOS 3.30, PC-DOS 4.01, MS-DOS 5.00, and MS-DOS 6.22 all report
  111.       version 1.00.
  112.     this function was undocumented prior to the release of DOS 5.0
  113.     most versions of KEYB completely replace the BIOS INT 09 handler, but
  114.       Novell DOS's KEYB partially uses the BIOS code and thus continues
  115.       to chain to the original INT 09 at times
  116.     some utilities check for AX=FFFFh on return
  117. SeeAlso: AX=AD80h"Novell",AX=AD81h,AX=AD82h,AX=AD83h
  118.  
  119. Format of KEYB internal data:
  120. Offset    Size    Description    (Table 02972)
  121.  00h    DWORD    original INT 09
  122.  04h    DWORD    original INT 2F
  123.  08h    DWORD    unused (0) original INT 16 in older KEYB versions???
  124.  0Ch    WORD    flags A (see #02973)
  125.  0Eh    WORD    flags B (see #02974)
  126.  10h    BYTE    flags??? (bit1 used)
  127.  11h    BYTE    ???
  128.  12h  4 BYTEs    ???
  129.  16h  2 BYTEs    country ID letters, default is "US"
  130.  18h    WORD    current code page (see #01757 at INT 21/AX=6602h)
  131. ---DOS 3.3---
  132.  1Ah    WORD    pointer to first item in list of code page tables???
  133.  1Ch    WORD    pointer to ??? item in list of code page tables
  134.  1Eh  2 BYTEs    unused???
  135.  20h    WORD    pointer to key translation data (see #02976)
  136.  22h    WORD    pointer to last item in code page table list (see #02975)
  137.  24h  9 BYTEs    ???
  138. ---DOS 4.01---
  139.  1Ah  2 BYTEs    ???
  140.  1Ch    WORD    pointer to first item in list of code page tables???
  141.  1Eh    WORD    pointer to ??? item in list of code page tables
  142.  20h 2 BYTEs    unused???
  143.  22h    WORD    pointer to key translation data (see #02976)
  144.  24h    WORD    pointer to last item in code page table list (see #02975)
  145.  26h  9 BYTEs    ???
  146. ---DOS 6.22--- (checked out with 6.22, but might be earlier)
  147.  1Ah  2 BYTEs    ???
  148.  1Ch    WORD    pointer to current (first???) item in list of code page tables
  149.         (corresponding to codepage indicated at offset 18h)
  150.         (initial value is FFFFh)
  151.  1Eh    WORD    pointer to (entry to) list of code page tables (see #02975)
  152.         If not FFFFh, INT 2F/AX=AD81h scans this list of code page
  153.           tables until the requested code page was found in list or
  154.           end of table was reached (FFFFh). If found, offsets 18h and
  155.           1Ch will be changed to requested new code page. If not found,
  156.           it returns with AX=0001h 'code page not supported').
  157.  20h    WORD    unused??? (initial value: FFFFh)
  158.  22h    WORD    pointer to key translation data (see #02455)
  159.  24h    WORD    pointer to last item in code page table list (see #02454)
  160.  26h    WORD    CAPSLock/ShiftLock management flags??? (0)
  161.         Note:    It appears that none of the bits is ever set inside
  162.               KEYBs code!
  163.               The following is guesswork:
  164.         bit15: =1: With country specific keyboard mapping (<Ctrl>+
  165.               <Alt>+<F2>) active, <CapsLock> works as CAPSLock
  166.               instead of ShiftLock??? Pressing a key in first row
  167.               resets CapsLock???
  168.               (Effective only on PC Convertible or with Enhanced
  169.               keyboard).
  170.         bit14-10:  unused (0)
  171.         bit 9: =1: With country specific keyboard mapping active:
  172.               some kind of temporary (table) shift???
  173.         bit 8-0: unused (0)
  174.  28h    BYTE    unused (0)
  175.  29h    BYTE    make code xx for <Ctrl>+<Alt>+<xx> to set keyboard mapping
  176.           to US-layout (default is 3Bh=<F1>???)
  177.           (see INT 2F/AX=AD82h,INT 2F/AX=AD83h)
  178.  2Ah    BYTE    make code yy for <Ctrl>+<Alt>+<yy> to set keyboard mapping
  179.           to country specific layout (default is 3Ch=<F2>???),
  180.           (see INT 2F/AX=AD82h,INT 2F/AX=AD83h)
  181.  2Bh 16 BYTEs    unused (0) ???
  182. Note:    at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
  183.       precedes this structure
  184.  
  185. Bitfields for MS-DOS v6.22 KEYB flags A:
  186. Bit(s)    Description    (Table 02973)
  187.  15    unused??? (0)
  188.  14    set on machine with BIOS machine type FBh or FEh/FFh without enh kbd
  189.  13    not FAh: ???
  190.  12    set on start of machine detection, cleared on machine types F9h, FBh,
  191.       FEh, FFh
  192.  11    not FAh: ???
  193.     (on ATs: override bit12 NOT to set NumLock on)
  194.  10    set on machine type F9h
  195.  9    unused??? (0)
  196.  8    unused??? (0)
  197.  7    used by INT 09, but never set!
  198.     =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
  199.           keyboard code-set 1 and temporarily disable a PS/2 mouseport.
  200.  6    used by INT09, but never set!
  201.     =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
  202.           keyboard code-set 1 and temporarily disable a PS/2 mouseport.
  203.  5    set for JP, KO, PR, TA layouts during installation???
  204.     =1: some special codepage (>932???) management???
  205.  4-0    unused??? (0)
  206. SeeAlso: #02974,MEM F000h:FFFEh,INT 15/AH=C0h
  207.  
  208. Bitfields for MS-DOS v6.22 KEYB flags B:
  209. Bit(s)    Description    (Table 02974)
  210.  15    INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h)
  211.     if clear, extended keyboard scan codes are immediately discarded
  212.  14    INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
  213.  13    unused (0)
  214.  12    network installed (INT 2F/AX=B800h)
  215.  11    original IBM PC (BIOS date 1981)
  216.  10    PC or PC/XT (BIOS machine type byte of FBh or FEh)
  217.  9    PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
  218.  8    unused (0)
  219.  7    IBM PS/2 model 30 (BIOS machine type byte of FAh)
  220.  6    IBM AT (BIOS machine type FCh)
  221.  5    IBM PS/2 (BIOS machine type F8h)
  222.  4    PS/2 and unknown only: non-standard 8042 reported by INT 15/AH=C0h
  223.     =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
  224.           keyboard code-set 1 and temporarily disable a PS/2 mouseport.
  225.  3    temporary flag???
  226.  2-0    ???
  227. SeeAlso: #02972,#02973
  228.  
  229. Format of code page table list entries:
  230. Offset    Size    Description    (Table 02975)
  231.  00h    WORD    pointer to next item, FFFFh = last
  232.  02h    WORD    code page (see #01757 at INT 21/AX=6602h)
  233.  04h  2 BYTEs    ???
  234.  
  235. Format of KEYB translation data:
  236. Offset    Size    Description    (Table 02976)
  237.  00h    WORD    size of data in bytes, including this word
  238.  02h N-2 BYTEs    ???
  239. --------K-2FAD80-----------------------------
  240. INT 2F u - Novell DOS 7 KEYB.COM - INSTALLATION CHECK
  241.     AX = AD80h
  242. Return: AX = FFFFh if installed
  243.         CX = Novell DOS KEYB version number (CL = major, CH = minor)
  244.         DX = current keyboard codepage
  245.         ES:DI -> internal data and tables (ES=FFFEh if KEYB in HMA)
  246.     flags destroyed
  247. Notes:    versions: v2.08 (original ship 4/94), v2.09 (Update 10, 11/18/94),
  248.       v2.10 (Update 12, 2/22/95), v2.11 (Update 13, 5/8/95),
  249.       v2.12 (Update 14, 7/31/95)
  250.     although the installation check is via this INT 2F call, Novell DOS 7's
  251.       KEYB has no known INT 2F entry point!     Presumably, the handler is
  252.       either coded in the kernel or reached via a FAR JMP from the kernel
  253. SeeAlso: AX=AD80h"MS-DOS"
  254. --------K-2FAD81-----------------------------
  255. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  256.     AX = AD81h
  257.     BX = code page (see #01757 at INT 21/AX=6601h)
  258. Return: CF set on error
  259.         AX = 0001h (code page not available)
  260.     CF clear if successful
  261. Notes:    called by DISPLAY.SYS
  262.     this function was undocumented prior to the release of DOS 5.0
  263. SeeAlso: AX=AD80h,AX=AD82h
  264. --------K-2FAD82-----------------------------
  265. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  266.     AX = AD82h
  267.     BL = new state
  268.         00h US keyboard (Control-Alt-F1)
  269.         FFh foreign keyboard (Control-Alt-F2)
  270. Return: CF set on error (BL not 00h or FFh)
  271.     CF clear if successful
  272. Note:    this function was undocumented prior to the release of DOS 5.0
  273. SeeAlso: AX=AD80h,AX=AD81h,AX=AD83h
  274. --------K-2FAD83-----------------------------
  275. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  276.     AX = AD83h
  277. Return: BL = current state
  278.         00h US keyboard
  279.         FFh foreign keyboard
  280. SeeAlso: AX=AD82h
  281. --------l-2FAE00-----------------------------
  282. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  283.     AX = AE00h
  284.     DX = magic value FFFFh
  285.     CH = FFh
  286.     CL = length of command line tail (4DOS v4.0)
  287.     DS:BX -> command line buffer (see #02977)
  288.     DS:SI -> command name buffer (see #02978)
  289.     DI = 0000h (4DOS v4.0)
  290. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  291.     AL = 00h if the command should be executed as usual
  292. Notes:    This call provides a mechanism for TSRs to install permanent
  293.       extensions to the command repertoire of COMMAND.COM.    It appears
  294.       that COMMAND.COM makes this call before executing the current
  295.       command line, and does not execute it itself if the return is FFh.
  296.     APPEND hooks this call, to allow subsequent APPEND commands to
  297.       execute without re-running APPEND
  298. SeeAlso: AX=AE01h
  299.  
  300. Format of COMMAND.COM command line buffer:
  301. Offset    Size    Description    (Table 02977)
  302.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  303.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  304.       N BYTEs    command line text, terminated by 0Dh
  305.  
  306. Format of command name buffer:
  307. Offset    Size    Description    (Table 02978)
  308.  00h    BYTE    length of command name
  309.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  310. --------l-2FAE01-----------------------------
  311. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  312.     AX = AE01h
  313.     DX = magic value FFFFh
  314.     CH = 00h
  315.     CL = length of command name (4DOS v4.0)
  316.     DS:BX -> command line buffer (see #02977)
  317.     DS:SI -> command name buffer (see #02978)
  318. Return: DS:SI buffer updated
  319.       if length byte is nonzero, the following bytes contain the uppercase
  320.       internal command to execute and the command line buffer contains the
  321.       command's parameters (the first DS:[SI] bytes are ignored)
  322. Notes:    this call requests execution of the command which a previous call to
  323.       AX=AE00h indicated was resident
  324.     APPEND hooks this call
  325. BUG:    Novell DOS 7.0's COMMAND.COM (prior to Update 12) will attempt to run
  326.       a disk program with the indicated name even if the returned length
  327.       byte is zero, because the register used to flag this case is
  328.       clobbered without first checking it.    The workaround is to set the
  329.       command name buffer to "REM" followed by enough blanks to pad out
  330.       the original command's length, which will also work with MS-DOS 6.
  331.       (from padgett@tccslr.dnet.mmc.com)
  332. SeeAlso: AX=AE00h
  333. --------O-2FAF00-----------------------------
  334. INT 2F - WinDOS v2.11 - INSTALLATION CHECK
  335.     AX = AF00h
  336. Return: AL = FFh if installed
  337. Program: WinDOS is a DOS clone (claimed to be mostly MS-DOS 5.0 API compatible)
  338.       written by Heiko Goemann
  339. SeeAlso: AX=AF01h"WinDOS",INT 21/AH=30h
  340. ----------2FAF00-----------------------------
  341. INT 2F U - ???
  342.     AX = AF00h
  343.     ???
  344. Return: AX = 0000h if interface supported
  345. SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
  346. --------O-2FAF01-----------------------------
  347. INT 2F - WinDOS v2.11 - TURN ON ONLINE MODE
  348.     AX = AF01h
  349. Return: nothing
  350. Desc:    indicate that the user will not exchange floppy disks, allowing WinDOS
  351.       to cache disk sectors in memory and avoid writing modified sectors
  352.       back out to the floppy disk
  353. SeeAlso: AX=AF00h"WinDOS",AX=AF02h"WinDOS"
  354. --------O-2FAF02-----------------------------
  355. INT 2F - WinDOS v2.11 - TURN OFF ONLINE MODE
  356.     AX = AF02h
  357. Return: nothing
  358. Desc:    indicate that the floppy disk may be removed, and that WinDOS should
  359.       write all buffered sectors out to the floppy disk
  360. SeeAlso: AX=AF00h"WinDOS",AX=AF01h"WinDOS"
  361. ----------2FAF02-----------------------------
  362. INT 2F U - ???
  363.     AX = AF02h
  364.     ???
  365. Return: ES = ???
  366. SeeAlso: AX=AF00h
  367. --------O-2FAF03-----------------------------
  368. INT 2F - WinDOS v2.11 - TURN VIDMEM ON
  369.     AX = AF03h
  370. Return: AX = status
  371.         0000h successful
  372.         0001h CPU not in mode set by DOS386=On
  373.         0002h video adapter in graphics mode
  374.         0003h memory chain corrupted
  375. SeeAlso: AX=AF00h"WinDOS",AX=AF04h"WinDOS",AX=AF05h"WinDOS"
  376. ----------2FAF03-----------------------------
  377. INT 2F U - ???
  378.     AX = AF03h
  379.     ???
  380. Return: DX = ???
  381. SeeAlso: AX=AF00h
  382. --------O-2FAF04-----------------------------
  383. INT 2F - WinDOS v2.11 - TURN VIDMEM OFF
  384.     AX = AF04h
  385. Return: AX = status
  386.         0000h successful
  387.         0001h video memory is in use
  388. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF05h"WinDOS"
  389. ----------2FAF04-----------------------------
  390. INT 2F U - ???
  391.     AX = AF04h
  392.     ???
  393. Return: ???
  394. SeeAlso: AX=AF00h
  395. --------O-2FAF05-----------------------------
  396. INT 2F - WinDOS v2.11 - GET VIDMEM STATE
  397.     AX = AF05h
  398. Return: AX = status (0000h off, 0001h on)
  399. SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF04h"WinDOS"
  400. ----------2FAF05-----------------------------
  401. INT 2F U - ???
  402.     AX = AF05h
  403.     ???
  404. Return: ???
  405. SeeAlso: AX=AF00h
  406. --------O-2FAF06-----------------------------
  407. INT 2F - WinDOS v2.11 - MAKE PROGRAM UNBREAKABLE
  408.     AX = AF06h
  409.     DS:DX -> break handler
  410.     DI:BX = stack to use for break handler
  411. Return: nothing
  412. Desc:    set a handler which should be invoked when Ctrl-C is pressed instead of
  413.       aborting the program
  414. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah"WinDOS",AX=AF0Ch"WinDOS"
  415. --------O-2FAF07-----------------------------
  416. INT 2F - WinDOS v2.11 - SIGNAL FATAL OVERLAY FAULT
  417.     AX = AF07h
  418. Return: never -- system reset
  419. Desc:    pop up a window indicating that the system overlay file can not be
  420.       loaded
  421. SeeAlso: AX=AF00h"WinDOS",AX=AF08h"WinDOS"
  422. --------O-2FAF08-----------------------------
  423. INT 2F - WinDOS v2.11 - SIGNAL RECOVERABLE OVERLAY FAULT
  424.     AX = AF08h
  425. Return: nothing
  426. Desc:    pop up a window requesting that a disk containing SH.OVL be inserted
  427. SeeAlso: AX=AF00h"WinDOS",AX=AF07h"WinDOS",AX=AF0Bh
  428. --------O-2FAF09-----------------------------
  429. INT 2F - WinDOS v2.11 - GET TERMINATED PSP
  430.     AX = AF09h
  431. Return: DS = PSP segment of most recently ended TSR
  432. SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah
  433. --------O-2FAF0A-----------------------------
  434. INT 2F - WinDOS v2.11 - GET MAIN SHELL PSP
  435.     AX = AF0Ah
  436. Return: AX = shell's PSP (same as DS on last call to AX=AF06h)
  437. Desc:    get the PSP address of the last program to call AX=AF06h (normally
  438.       the main command interpreter)
  439. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS",AX=AF09h
  440. --------O-2FAF0B-----------------------------
  441. INT 2F - WinDOS v2.11 - SIGNAL FATAL ERROR
  442.     AX = AF0Bh
  443. Return: never -- system reset
  444. Desc:    pop up a window indicating a terminal system error
  445. SeeAlso: AX=AF00h"WinDOS",AX=AF07h,AX=AF08h,AX=AF15h"WinDOS"
  446. --------O-2FAF0C-----------------------------
  447. INT 2F - WinDOS v2.11 - GET OTHER MAIN SHELL PARAMETERS
  448.     AX = AF0Ch
  449. Return: DI:AX = stack
  450.     SI = offset of break handler
  451. Desc:    retrieve the parameters last set by AX=AF06h (normally by the main
  452.       command interpreter)
  453. SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS"
  454. --------O-2FAF0D-----------------------------
  455. INT 2F - WinDOS v2.11 - GET CURRENT PARAMETER
  456.     AX = AF0Dh
  457.     BX = offset of desired parameter in global data area
  458. Return: AX = current value of parameter (AH undefined if byte value)
  459. SeeAlso: AX=AF00h"WinDOS",AX=AF0Eh
  460. --------O-2FAF0E-----------------------------
  461. INT 2F - WinDOS v2.11 - SET CURRENT PARAMETER BYTE VALUE
  462.     AX = AF0Eh
  463.     BX = offset of desired parameter in global data area
  464.     DL = new value of parameter
  465. Return: nothing
  466. SeeAlso: AX=AF00h"WinDOS",AX=AF0Dh
  467. --------O-2FAF0F-----------------------------
  468. INT 2F - WinDOS v2.11 - GET HISTORY SEGMENT
  469.     AX = AF0Fh
  470. Return: AX = segment of buffer for input history, or 0000h if none
  471. SeeAlso: AX=AF00h"WinDOS",AX=AF10h"WinDOS"
  472. --------O-2FAF10-----------------------------
  473. INT 2F - WinDOS v2.11 - SET HISTORY SEGMENT
  474.     AX = AF10h
  475.     BX = segment of new buffer for input history
  476. Return: nothing
  477. Note:    the buffer must have been allocated with INT 21/AH=48h
  478. SeeAlso: AX=AF00h"WinDOS",AX=AF0Fh"WinDOS"
  479. --------O-2FAF11-----------------------------
  480. INT 2F - WinDOS v2.11 - FREE XMS BLOCKS
  481.     AX = AF11h
  482. Return: nothing
  483. Desc:    free all XMS blocks whose XMS identification value (see AX=AF12h)
  484.       equals the current PSP
  485. SeeAlso: AX=AF00h"WinDOS",AX=AF12h"WinDOS",INT 21/AH=50h
  486. --------O-2FAF12-----------------------------
  487. INT 2F - WinDOS v2.11 - SET XMS IDENTIFICATION VALUE
  488.     AX = AF12h
  489.     DS = new XMS identification value (normally caller's PSP segment)
  490. Return: nothing
  491. SeeAlso: AX=AF00h"WinDOS",AX=AF11h"WinDOS"
  492. ----------2FAF12-----------------------------
  493. INT 2F U - ???
  494.     AX = AF12h
  495.     ???
  496. Return: ES = ???
  497. SeeAlso: AX=AF00h
  498. --------O-2FAF13-----------------------------
  499. INT 2F - WinDOS v2.11 - SET ASSIGN VALUE
  500.     AX = AF13h
  501.     BL = number of drive to remap (00h = A:)
  502.     DL = number of drive to be accessed via drive number BL
  503. Return: nothing
  504. Desc:    remap a drive letter
  505. Note:    the remapping can be canceled by specifying DL=BL
  506. SeeAlso: AX=AF00h"WinDOS",AX=AF14h"WinDOS",AX=0601h
  507. ----------2FAF13-----------------------------
  508. INT 2F U - ???
  509.     AX = AF13h
  510.     ???
  511. Return: ???
  512. SeeAlso: AX=AF00h
  513. --------O-2FAF14-----------------------------
  514. INT 2F - WinDOS v2.11 - GET ASSIGN VALUE
  515.     AX = AF14h
  516.     BL = drive number (00h = A:)
  517. Return: DL = drive number which is actually accessed by drive number BL
  518. Desc:    determine the current mapping for a drive
  519. SeeAlso: AX=AF00h"WinDOS",AX=AF13h"WinDOS",AX=0601h
  520. --------O-2FAF15-----------------------------
  521. INT 2F - WinDOS v2.11 - SIGNAL STACK ERROR
  522.     AX = AF15h
  523. Return: never -- system reset
  524. Desc:    pop up a window indicating a stack overflow
  525. SeeAlso: AX=AF00h"WinDOS",AX=AF0Bh"WinDOS"
  526. --------O-2FAF16-----------------------------
  527. INT 2F - WinDOS v2.11 - GET SIMPLE TRUENAME
  528.     AX = AF16h
  529.     DS:SI -> path to be canonicalized
  530.     ES:DI -> buffer for canonicalized filename/pathname
  531. Return: CF clear if successful
  532.         AX = 0000h
  533.     CF set on error
  534.         AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
  535. Desc:    partially canonicalize a path, omitting SUBST, JOIN, ASSIGN, and
  536.       network redirections
  537. SeeAlso: AX=AF00h"WinDOS",INT 21/AH=60h
  538. --------O-2FAF17-----------------------------
  539. INT 2F - WinDOS v2.11 - QUERY FOR NEW CURRENT DRIVE
  540.     AX = AF17h
  541. Return: nothing
  542. Desc:    pop up a dialog allowing the user to select a new default drive
  543. SeeAlso: AX=AF00h"WinDOS"
  544. --------O-2FAF18-----------------------------
  545. INT 2F - WinDOS v2.11 - SET CTRL-C/CTRL-BREAK DISABLE FLAG
  546.     AX = AF18h
  547.     DL = new break-checking state (00h enabled, 01h disabled)
  548. Return: nothing
  549. SeeAlso: AX=AF00h"WinDOS"
  550. --------O-2FAF19-----------------------------
  551. INT 2F - WinDOS v2.11 - SET HEAD SETTLE FLAG
  552.     AX = AF19h
  553.     DL = new state
  554.         00h diskette head settling time reset to 15ms before each access
  555.         01h no additional head settling time used between accesses
  556. Return: nothing
  557. SeeAlso: AX=AF00h"WinDOS"
  558. --------O-2FAF1A-----------------------------
  559. INT 2F - WinDOS v2.11 - SEARCH FOR NON-FRAGMENTED DISK AREA
  560.     AX = AF1Ah
  561.     BL = drive (00h = current, 01h = A:, etc.)
  562.     CX = number of clusters desired
  563. Return: CF clear if successful
  564.         DI = first free cluster on logical drive
  565.         BP = first cluster of contiguous free area
  566.         AX destroyed
  567.     CF set on error
  568.         AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
  569. Desc:    attempt to find an area of the disk containing the specified number
  570.       of contiguous unallocated clusters
  571. SeeAlso: AX=AF00h"WinDOS"
  572. ----------2FAF30-----------------------------
  573. INT 2F U - ???
  574.     AX = AF30h
  575.     ???
  576. Return: ???
  577. SeeAlso: AX=AF00h
  578. --------d-2FAFDE-----------------------------
  579. INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
  580.     AX = AFDEh
  581.     ES:DI -> 14-byte buffer for data (see #02979)
  582. Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
  583.         BX = version (BH = major, BL = minor)
  584.  
  585. Format of Disk-Emu information data:
  586. Offset    Size    Description    (Table 02979)
  587.  00h    BYTE    number of tracks
  588.  01h    BYTE    sectors per track
  589.  02h    WORD    bytes per sector
  590.  04h    BYTE    number of heads
  591.  05h    BYTE    flag: 00h inactive, 01h active
  592.  06h    BYTE    write protection (00h none, 01h full, 02h pseudo)
  593.  07h    BYTE    saved (00h some unsaved data, 01h all data saved)
  594.  08h    BYTE    disk in memory (00h no, 01h yes)
  595.  09h    WORD    EMS handle
  596.  0Bh    WORD    XMS handle
  597.  0Dh    BYTE    memory type used for disk (00h XMS, 01h EMS)
  598. --------V-2FB000-----------------------------
  599. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  600.     AX = B000h
  601. Return: AL = status
  602.         00h not installed, OK to install
  603.         01h not installed, not OK to install
  604.         FFh installed
  605. Notes:    called by DISPLAY.SYS
  606.     documented for DOS 5.0, but undocumented in prior versions
  607. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  608. --------V-2FB001-----------------------------
  609. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  610.     AX = B001h
  611.     DS:BX -> DWORD buffer for address of 8x8 font table
  612. Return: buffer filled
  613.     AL = FFh
  614. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  615.       MS-DOS 3.30 sets it to 0030h
  616. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  617. --------I-2FB400-----------------------------
  618. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  619.     AX = B400h
  620. Return: AL = FFh if installed
  621. --------I-2FB401-----------------------------
  622. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  623.     AX = B401h
  624. Return: ES -> host screen buffer (PC ASCII format)
  625.     ES unchanged if communications not started
  626. --------I-2FB402-----------------------------
  627. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  628.     AX = B402h
  629.     BX = ???
  630. Return: ???
  631. --------I-2FB403-----------------------------
  632. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  633.     AX = B403h
  634.     ???
  635. Return: ???
  636. --------I-2FB404-----------------------------
  637. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  638.     AX = B404h
  639.     ???
  640. Return: ???
  641. --------I-2FB405-----------------------------
  642. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  643.     AX = B405h
  644.     ???
  645. Return: ???
  646. --------f-2FB700-----------------------------
  647. INT 2F - APPEND - INSTALLATION CHECK
  648.     AX = B700h
  649. Return: AL = status
  650.         00h not installed
  651.         FFh installed
  652. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  653.       a TopView-compatible environment
  654. SeeAlso: AX=B702h
  655. --------f-2FB701-----------------------------
  656. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  657.     AX = B701h
  658. Return: ES:DI -> active APPEND path
  659. Notes:    the only version of APPEND known to support this call is the APPEND
  660.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  661.       "Incorrect APPEND Version" and aborts the caller
  662.     use AX=B704h first, and only call this function if that one is not
  663.       supported
  664. SeeAlso: AX=B700h,AX=B704h
  665. --------f-2FB702-----------------------------
  666. INT 2F - APPEND - GET VERSION
  667.     AX = B702h
  668. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  669.     AL = major version number
  670.     AH = minor version number, otherwise
  671. SeeAlso: AX=B700h,AX=B710h
  672. --------f-2FB703-----------------------------
  673. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  674.     AX = B703h
  675.     ES:DI -> INT 21 handler APPEND should chain to
  676. Return: ES:DI -> APPEND's INT 21 handler
  677. Note:    each invocation of this function toggles a flag which APPEND uses to
  678.       determine whether to chain to the user handler or the original
  679.       INT 21
  680. SeeAlso: AX=B700h,AX=B706h
  681. --------f-2FB704-----------------------------
  682. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  683.     AX = B704h
  684. Return: ES:DI -> active APPEND path (128 bytes max)
  685. Note:    some versions of append do not support this call, and return ES
  686.       unchanged; in this case, you should call AX=B701h to get the APPEND
  687.       path
  688. SeeAlso: AX=B701h
  689. --------f-2FB706-----------------------------
  690. INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
  691.     AX = B706h
  692. Return: BX = APPEND state (see #02980)
  693. SeeAlso: AX=B700h,AX=B707h
  694.  
  695. Bitfields for APPEND state:
  696. Bit(s)    Description    (Table 02980)
  697.  0    set if APPEND enabled
  698.  1-11    reserved
  699.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  700.       been specified
  701.  13    set if /PATH flag active
  702.  14    set if /E flag active (environment var APPEND exists)
  703.  15    set if /X flag active
  704. --------f-2FB707-----------------------------
  705. INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
  706.     AX = B707h
  707.     BX = APPEND state bits (see #02980)
  708. SeeAlso: AX=B700h,AX=B706h
  709. --------f-2FB710-----------------------------
  710. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  711.     AX = B710h
  712. Return: AX = current APPEND state (see #02980)
  713.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  714.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  715.     DL = major version
  716.     DH = minor version
  717. SeeAlso: AX=B700h,AX=B702h
  718. --------f-2FB711-----------------------------
  719. INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
  720.     AX = B711h
  721. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  722.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  723.       is written over top of the filename passed to the INT 21h call.  The
  724.       application must provide a sufficiently large buffer.     This state is
  725.       reset after the next INT 21h call processed by APPEND.
  726.     APPEND uses the byte at offset 3Dh in the PSP
  727.       (see #01378 at INT 21/AH=26h) to store the flag telling it to
  728.       overwrite the filename
  729. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  730.       INT 21/AH=6Ch
  731. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  732. --------N-2FB800-----------------------------
  733. INT 2F - NETWORK - INSTALLATION CHECK
  734.     AX = B800h
  735. Return: AL = status
  736.         00h        not installed
  737.         nonzero installed
  738.           BX = installed component flags (test in this order!)
  739.            bit 6   server
  740.            bit 2   messenger
  741.            bit 7   receiver
  742.            bit 3   redirector
  743.            bit 1   LANPUP (LANtastic 4.0)
  744. Notes:    this function is supported by PC LAN Program, LAN Manager, LANtastic,
  745.       NetWare Lite, SilverNET, 10NET, etc.
  746.     LANtastic and NetWare Lite use only BL for the return value, preserving
  747.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  748.       differentiation between those two groups by setting BH to a nonzero
  749.       value before the call and checking its value on return.
  750. SeeAlso: AX=4E53h,AX=B809h
  751. --------N-2FB800CXF041-----------------------
  752. INT 2F - 10NET - INSTALLATION CHECK
  753.     AX = B800h
  754.     CX = F041h
  755. Return: AL = status
  756.         00h        not installed
  757.         nonzero installed
  758.         BX = installed component flags (test in this order!)
  759.            bit 6   server
  760.            bit 2   messenger
  761.            bit 7   receiver
  762.            bit 3   redirector
  763.            bit 1   LANPUP (LANtastic 4.0)
  764.         CX = 10Net data segment
  765.         CX:DX -> 10Net Configuration Table
  766.               (see #01691 at INT 21/AX=5E01h"10NET")
  767. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  768.       call becomes identical to the standard installation check above
  769. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  770. --------N-2FB803-----------------------------
  771. INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
  772.     AX = B803h
  773. Return: ES:BX -> current event post handler (see AX=B804h)
  774. Note:    this function is supported by PC LAN Program, 10NET v5.0,
  775.       NetSoft DOS-NET v1.20+
  776. SeeAlso: AX=B800h,AX=B804h,AX=B903h
  777. --------N-2FB804-----------------------------
  778. INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
  779.     AX = B804h
  780.     CX = (10NET) 0370h if 10Windows is hooking post handler
  781.     ES:BX -> new event post handler (see #02981)
  782. Notes:    used in conjunction with AX=B803h to hook into the network event post
  783.       routine
  784.     this function is supported by PC LAN Program, 10NET v5.0,
  785.       NetSoft DOS-NET v1.20+
  786.     The specified handler is called on any network event.  Two events are
  787.       defined: message received and critical network error.
  788. SeeAlso: AX=B800h,AX=B803h,AX=B904h
  789.  
  790. (Table 02981)
  791. Values network post routine is called with:
  792.     AX = 0000h single block message
  793.         DS:SI -> ASCIZ originator name
  794.         DS:DI -> ASCIZ destination name
  795.         ES:BX -> text header (see #02982)
  796.     AX = 0001h start multiple message block
  797.         CX = block group ID
  798.         DS:SI -> ASCIZ originator name
  799.         DS:DI -> ASCIZ destination name
  800.     AX = 0002h multiple block text
  801.         CX = block group ID
  802.         ES:BX -> text header (see #02982)
  803.     AX = 0003h end multiple block message
  804.         CX = block group ID
  805.     AX = 0004h message aborted due to error
  806.         CX = block group ID
  807.     AX = 0101h server received badly formatted network request
  808.         Return: AX = FFFFh (PC LAN will process error)
  809.     AX = 0102h unexpected network error
  810.         ES:BX -> NCB (see #03249 at INT 5C"NetBIOS")
  811.     AX = 0103h server received INT 24 error
  812.         other registers as for INT 24, except AH is in BH
  813.         Return: as below, but only 0000h and FFFFh allowed
  814. Return: AX = response code
  815.         0000h user post routine processed message
  816.         0001h PC LAN will process message, but message window not displayed
  817.         FFFFh PC LAN will process message
  818.  
  819. Format of text header:
  820. Offset    Size    Description    (Table 02982)
  821.  00h    WORD    length of text (maximum 512 bytes)
  822.  02h  N BYTEs    text of message
  823. Note:    all CRLF sequences in message text are replaced by 14h; all other
  824.       values below 20h (space) are reserved
  825. --------N-2FB807-----------------------------
  826. INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
  827.     AX = B807h
  828. Return: CH = NetBIOS name number of the machine name
  829. SeeAlso: INT 21/AX=5E00h
  830. --------N-2FB808-----------------------------
  831. INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
  832.     AX = B808h
  833.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  834. Notes:    this call replaces the address to which the network software chains on
  835.       an INT 09 without preserving the original value.  This allows a prior
  836.       handler to unlink, but does not allow a new handler to be added
  837.       such that the network gets the INT 09 first unless the new handler
  838.       completely takes over INT 09 and never chains.
  839.     this function is called by the DOS 3.2 KEYBxx.COM
  840. SeeAlso: AX=B908h
  841. --------N-2FB809-----------------------------
  842. INT 2F - NETWORK - LANtastic, NetWare Lite - GET VERSION
  843.     AX = B809h
  844. Return: AH = major version
  845.     AL = minor version (decimal)
  846. Notes:    this function is supported in this form by LANtastic, NetWare Lite,
  847.       SilverNET, ...
  848.     NetWare Lite returns its own version number rather than a PC LAN
  849.       compatibility version
  850. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
  851. --------N-2FB809-----------------------------
  852. INT 2F - NETWORK - PC LAN Program, Microsoft Networking - GET VERSION
  853.     AX = B809h
  854. Return: AH = minor version (decimal)
  855.     AL = major version
  856. Notes:    this function is supported in this form by PC LAN Program, LAN Manager,
  857.       the DOS LAN Requester, 10NET v5.0, and Microsoft Networking under
  858.       WfWg 3.11
  859.     10NET returns version 1.10 (AX=0A01h) for compatibility
  860. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  861. --------N-2FB80A-----------------------------
  862. INT 2F u - PC Network 1.00 - ???
  863.     AX = B80Ah
  864.     ???
  865. Return: ???
  866. Program: PC Network is an early networking package which was renamed the
  867.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  868. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  869. --------N-2FB80E-----------------------------
  870. INT 2F U - DOS LAN Requester - GET XSI2 ADDRESS / DATA
  871.     AX = B80Eh
  872. Return: DS:DI -> XSI2 TSR's resident data (see #02983)
  873. Note:    this function is used by NET.COM to locate the USERID and DOMAIN of
  874.       the logged-in user (which may differ from the NET START domain
  875.       name from DOSLAN.INI which is returned by AX=B80Fh)
  876. SeeAlso: AX=B800h,AX=B80Fh
  877.  
  878. Format of XSI2 resident data:
  879. Offset    Size    Description    (Table 02983)
  880.  00h 254 BYTEs    ???
  881.  FEh 10 BYTEs    user ID 1
  882. 108h 10 BYTEs    user ID 2
  883. 112h 10 BYTEs    domain name 1
  884. 11Ch 10 BYTEs    domain name 2
  885. 126h  ? BYTEs    domain controller
  886. --------N-2FB80F-----------------------------
  887. INT 2F - DOS LAN Requester - GET START PARAMETERS
  888.     AX = B80Fh
  889.     CX = size of return data buffer
  890.     ES:DI -> return data buffer (see #02984)
  891. Return: AX = status
  892.          00h     network started
  893.          nonzero network not started
  894.     CX = number of bytes returned in buffer
  895.     ES:DI buffer filled
  896. SeeAlso: AX=B809h"PC LAN Program",AX=B80Eh
  897.  
  898. Format of DOS LAN Requester return data buffer:
  899. Offset    Size    Description    (Table 02984)
  900.  00h    BYTE    major version
  901.  01h    BYTE    minor version
  902.  02h    WORD    configuration flags given when network was started (see #02985)
  903.  04h 15 BYTEs    NET START machine name (space padded)
  904.  13h    BYTE    00h
  905.  14h 9    BYTEs    NET START domain name (NULL padded)
  906.  1Dh    BYTE    00h
  907.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  908.  3Eh    WORD    /SRV value
  909.  40h    WORD    /ASG value
  910.  42h    WORD    /NBC value
  911.  44h    WORD    /NBS value
  912.  46h    WORD    /BBC value
  913.  48h    WORD    /BBS value
  914.  4Ah    WORD    /PBC value
  915.  4Ch    WORD    /PBS value
  916.  4Eh    WORD    /PFS value
  917.  50h    WORD    /PFT value
  918.  52h    WORD    /PWT value
  919.  54h    WORD    /KUC value
  920.  56h    WORD    /KST value
  921.  58h    WORD    /NVS value
  922.  5Ah    WORD    /NMS value
  923.  5Ch    WORD    /NDB value
  924.  5Eh    WORD    /MBI value
  925.  60h    BYTE    NetBIOS name number for machine name
  926.  61h    BYTE    NetBIOS name number for domain name
  927.  62h    WORD    NetBIOS sessions required for configuration
  928.  64h    WORD    NetBIOS commands required for configuration
  929.  66h    WORD    NetBIOS names required for configuration
  930.  68h 128 BYTEs    NET START path (LANROOT)
  931.  E8h    BYTE    00h
  932.  
  933. Bitfields for configuration flags:
  934. Bit(s)    Description    (Table 02985)
  935.  0    /NVS nonzero
  936.  1    /NMS nonzero
  937.  2    /API
  938.  3    /HIM
  939.  4    /LIM
  940.  5    /ENC
  941.  6    /POP
  942.  7    /EMS
  943.  8    /RPL
  944.  9-12    reserved
  945.  13    RDR started
  946.  14    RCV started
  947.  15    User is currently logged on
  948. --------N-2FB900-----------------------------
  949. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  950.     AX = B900h
  951. Return: AL = state
  952.         00h if not installed
  953.         FFh if installed
  954. --------N-2FB901-----------------------------
  955. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  956.     AX = B901h
  957. Return: AL = ???
  958.     ES:BX -> RECEIVER.COM INT 2F handler
  959. Desc:    allows more efficient execution by letting the caller bypass any other
  960.       INT 2F handlers which have been added since RECEIVER.COM was
  961.       installed
  962. --------N-2FB903-----------------------------
  963. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  964.     AX = B903h
  965. Return: ES:BX -> POST handler
  966. SeeAlso: AX=B803h,AX=B904h
  967. --------N-2FB904-----------------------------
  968. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  969.     AX = B904h
  970.     ES:BX -> new POST handler
  971. SeeAlso: AX=B804h,AX=B903h
  972. --------N-2FB905-----------------------------
  973. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  974.     AX = B905h
  975.     DS:BX -> 128-byte buffer for filename 1
  976.     DS:DX -> 128-byte buffer for filename 2
  977. Return: buffers filled from RECEIVER.COM internal buffers
  978. Note:    use of filenames is unknown, but one appears to be for storing messages
  979. SeeAlso: AX=B906h
  980. --------N-2FB906-----------------------------
  981. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  982.     AX = B906h
  983.     DS:BX -> 128-byte buffer for filename 1
  984.     DS:DX -> 128-byte buffer for filename 2
  985. Return: RECEIVER.COM internal buffers filled from user buffers
  986. Note:    use of filenames is unknown, but one appears to be for storing messages
  987. SeeAlso: AX=B905h
  988. --------N-2FB908-----------------------------
  989. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  990.     AX = B908h
  991.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  992. Note:    this call replaces the address to which RECEIVER.COM chains on an
  993.       INT 09 without preserving the original value.     This allows a prior
  994.       handler to unlink, but does not allow a new handler to be added
  995.       such that RECEIVER gets the INT 09 first.
  996. SeeAlso: AX=B808h
  997. --------V-2FBC00-----------------------------
  998. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  999.     AX = BC00h
  1000. Return: AL = state
  1001.         00h not installed, OK to install
  1002.         01h not installed, not OK to install
  1003.         FFh installed
  1004.         BX = 5456h ("TV")
  1005. Range:    AH=80h to AH=FFh, selected by commandline switch
  1006. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1007. --------s-2FBC00BX3F3F-----------------------
  1008. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1009.     AX = BC00h
  1010.     BX = 3F3Fh ('??')
  1011.     CX = 0000h
  1012.     DX = 0000h
  1013. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1014. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1015.       of sound boards; its primary programmer was Bryan Crane
  1016. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1017. --------s-2FBC01-----------------------------
  1018. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1019.     AX = BC01h
  1020.     BX = magic value 6D20h ('m ')
  1021.     CX = magic value 2076h (' v')
  1022.     DX = magic value 2020h ('  ')
  1023. Return: BX = ASCII major version (leading zeros significant)
  1024.     CX = ASCII minor version (leading zeros significant)
  1025. SeeAlso: AX=BC00h/BX=3F3Fh
  1026. --------s-2FBC02-----------------------------
  1027. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1028.     AX = BC02h
  1029. Return: AX = 4D56h ('MV')
  1030.     BX:DX -> state table
  1031. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  1032. --------s-2FBC03-----------------------------
  1033. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1034.     AX = BC03h
  1035. Return: AX = 4D56h ('MV')
  1036.     BX:DX -> function table
  1037.     CX = ??? (000Eh)
  1038. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  1039. --------s-2FBC04-----------------------------
  1040. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1041.     AX = BC04h
  1042. Return: AX = 4D56h ('MV')
  1043.     BL = DMA channel
  1044.     CL = IRQ number
  1045. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  1046. --------V-2FBC06-----------------------------
  1047. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1048.     AX = BC06h
  1049. Return: BX = 5456h ("TV")
  1050.     CH = major version
  1051.     CL = minor version
  1052.     DL = revision
  1053. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1054. --------s-2FBC06-----------------------------
  1055. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1056.     AX = BC06h
  1057. Return: AX = 4D56h ('MV')
  1058.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1059. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1060. --------s-2FBC0B-----------------------------
  1061. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1062.     AX = BC0Bh
  1063. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1064. SeeAlso: AX=BC00h/BX=3F3Fh
  1065. --------s-2FBC0E-----------------------------
  1066. INT 2F - MediaVision MVSOUND.SYS - RE-INITIALIZE INT 09 HANDLER
  1067.     AX = BC0Eh
  1068. Return: BX = status
  1069.         0000h on failure
  1070.         AX = 0000h
  1071.         FFFFh if successful
  1072.         DX:AX -> prior INT 09 handler
  1073. Desc:    re-initialize INT 09 handler to re-enable hotkeys (e.g. after loading
  1074.       KEYB)
  1075. --------U-2FBE00-----------------------------
  1076. INT 2F - REDVIEW - INSTALLATION CHECK
  1077.     AX = BE00h
  1078. Return: AL = FFh if installed
  1079. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1080.       copies data sent to standard output to standard error when the
  1081.       former has been redirected to a file, thus allowing the data to
  1082.       be seen on the screen at the same time it is captured in a file
  1083. --------N-2FBF00-----------------------------
  1084. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1085.     AX = BF00h
  1086. Return: AL = FFh if installed
  1087. Note:    this function is also supported by NetSoft's DOS-NET v1.20+; however,
  1088.       none of the remaining BFxxh calls are supported
  1089. SeeAlso: AX=BF01h,AX=BF80h,INT 2A/AX=4147h
  1090. --------N-2FBF01-----------------------------
  1091. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1092.     AX = BF01h
  1093.     ???
  1094. Return: ???
  1095. SeeAlso: AX=BF00h
  1096. --------N-2FBF80-----------------------------
  1097. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1098.     AX = BF80h
  1099.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1100. Return: AL = FFh if installed
  1101.         ES:DI -> internal workspace
  1102. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1103. SeeAlso: AX=BF00h
  1104. --------F-2FC0-------------------------------
  1105. INT 2F - METZ XpressFax Hardware TSR (CLASS2) - API
  1106.     AH = C0h
  1107.     AL = function code (01h to 15h)
  1108. Return: ???
  1109. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  1110. --------N-2FC000-----------------------------
  1111. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1112.     AX = C000h
  1113. Return: AL = FFh if installed
  1114.         DX:BX -> FAR entry point (see #02986,#02987,#02988)
  1115.         ES:SI -> signature string "LINKSUP$"
  1116. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1117. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  1118.       its search for a previous installation
  1119. SeeAlso: AX=5100h,AX=C000h"NESL"
  1120.  
  1121. (Table 02986)
  1122. Call LSL function "Request MLID Registration" with:
  1123.     BX = 0001h
  1124.     ES:SI -> registration??? record (see #02990)
  1125.     DS:DI -> buffer for LSL information block (see #02991)
  1126. Return: AX = completion code (0000h,8001h) (see #02989)
  1127.     DS:DI buffer filled if successful
  1128.     BX,CX corrupted
  1129. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  1130.  
  1131. (Table 02987)
  1132. Call LSL function "get support entry points" with:
  1133.     BX = 0002h
  1134.     ES:SI -> buffer for entry point record (see #02992)
  1135. Return: ES:SI buffer filled
  1136.  
  1137. (Table 02988)
  1138. Call LSL function "Request MLID API entry point" with:
  1139.     BX = 0003h
  1140. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  1141.         (call with BX=function 00h-10h, not range-checked)
  1142. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  1143.  
  1144. (Table 02989)
  1145. Values for LSL completion code:
  1146.  0000h    successful
  1147.  8001h    out of resources
  1148.  8002h    bad parameter
  1149.  8003h    no more items
  1150.  8004h    item not present
  1151.  8005h    failed
  1152.  8006h    receive overflow
  1153.  8007h    canceled
  1154.  8008h    bad command
  1155.  8009h    duplicate entry
  1156.  800Ah    no such handler
  1157.  800Bh    no such driver
  1158.  
  1159. Format of LSL registration record:
  1160. Offset    Size    Description    (Table 02990)
  1161.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  1162.           returning AX = completion code)
  1163.  04h    DWORD    -> ???
  1164.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  1165.  
  1166. Format of LSL information block:
  1167. Offset    Size    Description    (Table 02991)
  1168.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  1169.  04h    WORD    ???
  1170.  06h    WORD    ???
  1171. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  1172.       will crash if the above entry point is called with BX=0012h
  1173.  
  1174. Format of entry point record:
  1175. Offset    Size    Description    (Table 02992)
  1176.  00h    DWORD    pointer to protocol support entry point in LSL (see #02993)
  1177.  04h    DWORD    pointer to general support entry point in LSL (see #02994)
  1178.  
  1179. (Table 02993)
  1180. Call protocol support entry point with:
  1181.     BX = function number
  1182.         0000h ???
  1183.         0001h ???
  1184.         0002h ???
  1185.         0003h "ScheduleAESEvent"
  1186.         ES:SI -> AES ECB to be scheduled (see #02997)
  1187.         Return: ES,SI preserved
  1188.         0004h "CancelAESEvent"
  1189.         ES:SI -> ECB to be cancelled (see #02997)
  1190.         Return: ES,SI preserved
  1191.         0005h "GetIntervalMarker"
  1192.         Return: DX:AX = current interval marker in milliseconds
  1193.             all other registers preserved
  1194.         0006h "RegisterStack"
  1195.         AX = logical board number
  1196.         ES:SI -> bound stack info structure (see #03007)
  1197.         Return: BX = assigned Stack ID if AX=0000h
  1198.         0007h "DeRegisterStack"
  1199.         AX = protocol stack's assigned Stack ID
  1200.         0008h "RegisterDefaultStack"
  1201.         AX = logical board number
  1202.         ES:SI -> stack info structure (see #03008)
  1203.         0009h "DeRegisterDefaultStack"
  1204.         AX = logical board number
  1205.         000Ah "RegisterPrescanStack"
  1206.         AX = logical board number
  1207.         ES:SI -> stack info structure (see #03008)
  1208.         000Bh "DeRegisterPrescanStack"
  1209.         AX = logical board number
  1210.         000Ch "SendPacket"
  1211.         ES:SI -> send ECB
  1212.         Return: interrupts disabled
  1213.         000Dh ???
  1214.         000Eh ???
  1215.         000Fh ???
  1216.         0010h "GetStackIDFromName"
  1217.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  1218.         Return: BX = Stack ID if AX=0000h
  1219.         0011h "GetPIDFromStackIDBoard"
  1220.         AX = Stack ID for protocol
  1221.         CX = logical board number
  1222.         ES:SI -> 6-byte buffer for protocol ID
  1223.         0012h "GetMLIDControlEntry"
  1224.         AX = logical board number
  1225.         Return: ES:SI -> MLID control handler (see #02995) if AX=0000h
  1226.         0013h "GetProtocolControlEntry"
  1227.         AX = Stack ID or
  1228.             FFFEh Prescan stack
  1229.                 CX = logical board number
  1230.             FFFFh default protocol
  1231.                 CX = logical board number
  1232.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  1233.                   (see #02996)
  1234.         0014h "GetLSLStatistics"
  1235.         Return: AX = 0000h (successful)
  1236.             ZF set
  1237.             ES:SI -> LSL statistics table (see #02999)
  1238.         0015h "BindStack"
  1239.         AX = protocol stack's assigned Stack ID
  1240.         CX = logical board number
  1241.         0016h "UnbindStack"
  1242.         AX = protocol stack's assigned Stack ID
  1243.         CX = logical board number
  1244.         0017h "AddProtocolID"
  1245.         AX = frame type ID code
  1246.         ES:SI -> 6-byte protocol ID
  1247.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  1248.         0018h "RelinquishControl"
  1249.         Return: after LSL performs any necessary background processing
  1250.         0019h "GetLSLConfiguration"
  1251.         Return: AX = 0000h (successful)
  1252.             ZF set
  1253.             ES:SI -> LSL configuration table (see #02998)
  1254.         001Ah "GetTickMarker"
  1255.         Return: AX = number of 55ms ticks since LSL loaded
  1256.             BX destroyed
  1257. Return: AX = completion code (see #02989)
  1258.     ZF set if successful
  1259.     SS:SP, DS, BP preserved; most other registers may be destroyed
  1260.  
  1261. (Table 02994)
  1262. Call general support entry point with:
  1263.     BX = function number
  1264.         0000h "Allocate Memory" (obsolete)
  1265.          always returns AX=8008h (BAD_COMMAND)
  1266.         0001h "Free Memory" (obsolete)
  1267.          always returns AX=8008h (BAD_COMMAND)
  1268.         0002h "Realloc Memory" (obsolete)
  1269.          always returns AX=8008h (BAD_COMMAND)
  1270.         0003h "Memory Statistics" (obsolete)
  1271.          always returns AX=8008h (BAD_COMMAND)
  1272.         0004h "Add Memory To Pool" (obsolete)
  1273.          always returns AX=8008h (BAD_COMMAND)
  1274.         0005h "AddGeneralService"
  1275.         ES:SI -> General Service Control Block (see #03009)
  1276.         0006h "RemoveGeneralService"
  1277.         ES:SI -> General Service Control Block (see #03009)
  1278.         0007h "GetNETcfgPath"
  1279.         Return: AX = 0000h (successful)
  1280.             DS:DX -> ASCIZ pathname for NET.CFG
  1281.         0008h U ???     (in LSL 1.10)
  1282.         Return: AX = 0000h
  1283.             ES:SI -> ??? (a 22-byte data area)
  1284.         000Ah "GetCriticalSectionStatus"
  1285.         Return: BX = total outstanding calls to "StartCriticalSection"
  1286.         000Bh "ServiceEvents"
  1287.         interrupts disabled
  1288.         Return: interrupts disabled
  1289.         0010h "GetStackECB"
  1290.         DS:DI -> Lookahead structure (see #03010)
  1291.         interrupts disabled
  1292.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  1293.             interrupts disabled
  1294.         8000h-FFFFh reserved for user general service providers
  1295. Return: AX = completion code (see #02989)
  1296.     ZF set if successful
  1297.     SS:SP, DS, BP preserved
  1298.  
  1299. (Table 02995)
  1300. Call MLID control handler with:
  1301.     AX = logical board number
  1302.     BX = function number
  1303.         0000h "GetMLIDConfiguration"
  1304.         Return: ES:SI -> MLID's configuration table if successful
  1305.                   (see #03002 for format)
  1306.         0001h "GetMLIDStatistics"
  1307.         Return: ES:SI -> MLID's statistics table if successful
  1308.                   (see #03002 for format)
  1309.         0002h "AddMulticastAddress"
  1310.         ES:SI -> 6-byte multicast address to add
  1311.         0003h "DeleteMulticastAddress"
  1312.         ES:SI -> 6-byte multicast address to delete
  1313.         0005h "MLIDShutdown"
  1314.         CX = type
  1315.             0000h permanent (also deregisters from LSL)
  1316.             other temporary (shutdown hardware only)
  1317.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  1318.         0007h "Create Connection" (obsolete?)
  1319.         ???
  1320.         0008h "Delete Connection" (obsolete?)
  1321.         ???
  1322.         0009h "SetLookAheadSize"
  1323.         CX = requested lookahead size (00h-80h)
  1324.         000Ah "PromiscuousChange"
  1325.         CX = what to receive promiscuously
  1326.             bit 0: MAC frames
  1327.             bit 1: non-MAC frames
  1328.         000Bh "RegisterReceiveMonitor"
  1329.         CX = subfunction
  1330.             0000h disable receive monitoring
  1331.             else  enable receive monitoring
  1332.         ES:SI -> monitor receive routine
  1333.         ES:DI -> monitor transmit routine
  1334.         000Ch "Driver Poll" (obsolete?)
  1335.         ???
  1336. Return: AX = completion code (see #02989)
  1337.     ZF set if successful
  1338. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  1339.       mode flags field of the MLID's configuration table
  1340.  
  1341. (Table 02996)
  1342. Call protocol stack control entry point with:
  1343.     BX = function number
  1344.         0000h "GetProtocolStackConfiguration"
  1345.         Return: ES:SI -> protocol stack's configuration table
  1346.                    (see #03001)
  1347.         0001h "GetProtocolStackStatistics"
  1348.         Return: ES:SI -> protocol stack's statistics table (see #03000)
  1349.         0002h "BindToMLID"
  1350.         CX = board number to bind to
  1351.         ES:SI -> implementation-dependant parameter string
  1352.         0003h "UnBindFromMLID"
  1353.         CX = board number from which protocol should unbind
  1354.         ES:SI -> optional implementation-dependant parameter string
  1355.         0004h "MLIDDeRegistered"
  1356.         CX = board number that has de-registered from LSL
  1357. Return: AX = status
  1358.         0000h successful
  1359.         else implementation-dependant error codes
  1360.     ZF set if successful
  1361.     SS:SP, DS, BP preserved
  1362.  
  1363. Format of AES ECB:
  1364. Offset    Size    Description    (Table 02997)
  1365.  00h    DWORD    "AESLink" pointer used by LSL for list management
  1366.  04h    DWORD    number of milliseconds to wait
  1367.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  1368.  0Ch    DWORD    -> function to be invoked when time expires
  1369.         ES:SI will point to this structure on entry,
  1370.         DS, BP, and SS:SP must be preserved.
  1371. SeeAlso: #03011
  1372.  
  1373. Format of LSL Configuration Table:
  1374. Offset    Size    Description    (Table 02998)
  1375.  00h    BYTE    major version of configuration table
  1376.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  1377.  02h  8 BYTEs    reserved
  1378.  0Ah    BYTE    LSL major version (decimal)
  1379.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  1380. ---LSL 1.0x ---
  1381.  0Ch 14 BYTEs    reserved
  1382. ---LSL 1.10+ ---
  1383.  0Ch    WORD    maximum number of boards which LSL can handle
  1384.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  1385.  10h 12 BYTEs    reserved
  1386.  
  1387. Format of LSL Statistics Table:
  1388. Offset    Size    Description    (Table 02999)
  1389.  00h    BYTE    major version of statistics table format
  1390.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  1391.  02h    WORD    "GenericCounters" number of counters in static portion of
  1392.           table
  1393.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  1394.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  1395.           is the next field, etc.
  1396.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  1397.  0Ch    DWORD    reserved
  1398.  10h    DWORD    reserved
  1399.  14h    DWORD    "AESEventsCount" number of completed AES events
  1400.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  1401.           sections inside the MLIDs
  1402.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  1403.  20h    DWORD    reserved
  1404.  24h    DWORD    reserved
  1405.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  1406.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  1407.           protocol stack
  1408.  30h    WORD    "NumberCustom" number of custom variables that follow
  1409.  32h  N DWORDs    custom counters
  1410.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  1411.     var    length-prepended and NULL terminated string for Counter 0
  1412.     ...
  1413.     var    length-prepended and NULL terminated string for Counter N-1
  1414. SeeAlso: #03000,#03006
  1415.  
  1416. Format of Protocol Stack Statistics Table:
  1417. Offset    Size    Description    (Table 03000)
  1418.  00h    BYTE    statistics table major version
  1419.  01h    BYTE    statistics table minor version (decimal, 0-99)
  1420.  02h    WORD    number of generic counters following
  1421.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  1422.  08h    DWORD    TotalTxPackets
  1423.  0Ch    DWORD    TotalRxPackets
  1424.  10h    DWORD    IgnoredRxPackets
  1425.  14h    WORD    number of custom counters
  1426.  16h  N DWORDs    custom counters
  1427.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  1428.     var    length-prepended and NULL terminated string for Counter 0
  1429.     ...
  1430.     var    length-prepended and NULL terminated string for Counter N-1
  1431. SeeAlso: #02999,#03006
  1432.  
  1433. Format of Protocol Stack Configuration Table:
  1434. Offset    Size    Description    (Table 03001)
  1435.  00h    BYTE    configuration table major version
  1436.  01h    BYTE    configuration table minor version (decimal, 0-99)
  1437.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  1438.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  1439.  0Ah    BYTE    protocol stack major version
  1440.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  1441.  0Ch 16 BYTEs    reserved for future use
  1442.  
  1443. Format of MLID Configuration Table:
  1444. Offset    Size    Description    (Table 03002)
  1445.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  1446.  1Ah    BYTE    configuration table major version
  1447.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  1448.  1Ch  6 BYTEs    node address
  1449.  22h    WORD    MLID mode flags (see #03003)
  1450.  24h    WORD    board number
  1451.  26h    WORD    board instance (if more than one of same board installed)
  1452.  28h    WORD    maximum packet size
  1453.  2Ah    WORD    BestDataSize
  1454.  2Ch    WORD    WorstDataSize
  1455.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  1456.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  1457.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  1458.  3Ah    WORD    reserved (0000h)
  1459.  3Ch    WORD    frame type ID
  1460.  3Eh    WORD    TransportTime (milliseconds)
  1461.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  1462.  44h    WORD    lookahead size
  1463.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  1464.  48h    WORD    QueueDepth
  1465.  4Ah  6 BYTEs    reserved (0)
  1466.  50h    BYTE    driver major version
  1467.  51h    BYTE    driver minor version (decimal, 0-99)
  1468.  52h    WORD    bus/multicast flags (see #03004)
  1469.  54h    WORD    send retries
  1470.  56h    DWORD    ConfigTableLink
  1471.  5Ah    WORD    MLID sharing flags (see #03005)
  1472.  5Ch    WORD    slot number
  1473.  5Eh    WORD    I/O address 1
  1474.  60h    WORD    I/O range 1
  1475.  62h    WORD    I/O address 2
  1476.  64h    WORD    I/O range 2
  1477.  66h    DWORD    memory address 1
  1478.  6Ah    WORD    memory size 1
  1479.  6Ch    DWORD    memory address 2
  1480.  70h    WORD    memory size 2
  1481.  72h    BYTE    interrupt line 1
  1482.  73h    BYTE    interrupt line 2
  1483.  74h    BYTE    DMA line 1
  1484.  75h    BYTE    DMA line 2
  1485.  
  1486. Bitfields for MLID mode flags:
  1487. Bit(s)    Description    (Table 03003)
  1488.  15    MLID supports Octet Reversal
  1489.  14    node address is non-canonical
  1490.  13    promiscuous mode is supported
  1491.  12-8    reserved
  1492.  7    LDataSize field in LookAhead structure supported
  1493.  6    raw send supported
  1494.  5    MLID needs to be polled by LSL
  1495.  4    reserved (0)
  1496.  3    multicasting is supported
  1497.  2    not currently used by DOS ODI, set to 0.
  1498.  1    network card uses DMA.
  1499.  0    RealDriverBit, always set to 1.
  1500.  
  1501. Bitfields for bus/multicast flags:
  1502. Bit(s)    Description    (Table 03004)
  1503.  10-9    specialized multicast support
  1504.     00 = Group addressing is default for medium
  1505.     01 = Invalid
  1506.     10 = Filter group address in MLID.
  1507.     11 = Adapter filters group address.
  1508.  2    supports Micro Channel cards
  1509.  1    supports ISA cards
  1510.  0    supports EISA cards
  1511.  
  1512. Bitfields for MLID sharing flags:
  1513. Bit(s)    Description    (Table 03005)
  1514.  8    NIC can share DMA2
  1515.  7    NIC can share DMA1
  1516.  6    NIC can share IRQ2
  1517.  5    NIC can share IRQ1
  1518.  4    NIC can share Memory2
  1519.  3    NIC can share Memory1
  1520.  2    NIC can share IO2
  1521.  1    NIC can share IO1
  1522.  0    MLID is currently shut down
  1523.  
  1524. Format of MLID Statistics Table:
  1525. Offset    Size    Description    (Table 03006)
  1526.  00h    BYTE    driver statistics table major version
  1527.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  1528.  02h    WORD    number of generic counters (typically 13)
  1529.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  1530.  08h    DWORD    TotalTxCount
  1531.  0Ch    DWORD    TotalRxCount
  1532.  10h    DWORD    NoECBAvailableCount
  1533.  14h    DWORD    TxTooBigCount
  1534.  18h    DWORD    TxTooSmallCount
  1535.  1Ch    DWORD    RxOverflowCount
  1536.  20h    DWORD    RxTooBigCount
  1537.  24h    DWORD    RxTooSmallCount
  1538.  28h    DWORD    TxMiscCount
  1539.  2Ch    DWORD    RxMiscCount
  1540.  30h    DWORD    TxRetryCount
  1541.  34h    DWORD    RxChecksumErrorCount
  1542.  38h    DWORD    RxMismatchCount
  1543.  3Ch    WORD    number of custom counters
  1544.  3Eh  N DWORDs    custom counters
  1545.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  1546.     var    length-prepended and NULL terminated string for Counter 0
  1547.     ...
  1548.     var    length-prepended and NULL terminated string for Counter N-1
  1549. SeeAlso: #02999,#03000
  1550.  
  1551. Format of bound stack info structure:
  1552. Offset    Size    Description    (Table 03007)
  1553.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  1554.  04h    DWORD    -> receive handler
  1555.  08h    DWORD    -> control handler
  1556.  
  1557. Format of stack info structure:
  1558. Offset    Size    Description    (Table 03008)
  1559.  00h    DWORD    -> receive handler
  1560.  04h    DWORD    -> control handler
  1561.  
  1562. Format of General Service Control Block:
  1563. Offset    Size    Description    (Table 03009)
  1564.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  1565.  04h    DWORD    -> entry point for general service handler
  1566.  08h    WORD    command code for this general service (8000h-FFFFh)
  1567. Note:    the control block must not be altered or deallocated until the general
  1568.       service is removed
  1569.  
  1570. Format of Lookahead structure:
  1571. Offset    Size    Description    (Table 03010)
  1572.  00h    DWORD    -> Media header
  1573.  04h    DWORD    -> lookahead buffer
  1574.  08h    WORD    length of lookahead buffer
  1575.  0Ah  6 BYTEs    protocol ID
  1576.  10h    WORD    logical board number
  1577.  12h    WORD    lookahead size
  1578.  
  1579. Format of ODI ECB:
  1580. Offset    Size    Description    (Table 03011)
  1581.  00h    DWORD    link to next ECB
  1582.  04h    DWORD    link to previous ECB
  1583.  08h    WORD    general status
  1584.         0000h received successfully
  1585.         8006h packet overflow
  1586.         8007h reception aborted (data not valid)
  1587.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #03012)
  1588.  0Eh    WORD    protocol stack identifier
  1589.  10h  6 BYTEs    protocol ID (sending only)
  1590.  16h    WORD    MLID board number (sending only)
  1591.  18h  6 BYTEs    MAC destination address
  1592.  1Eh  4 BYTEs    driver workspace
  1593.  22h  8 BYTEs    protocol workspace
  1594.  2Ah    WORD    total length of sent buffer
  1595.  2Ch    WORD    fragment count
  1596.  2Eh  2 WORDs    segment,offset of first fragment buffer
  1597.  32h    WORD    length of first fragment buffer
  1598.     ...
  1599. SeeAlso: #02997
  1600.  
  1601. (Table 03012)
  1602. Values event service routine is called with:
  1603.     ES:SI -> associated ODI ECB (see #03011)
  1604.     interrupts disabled
  1605. Return: DS,BP,SS,SP preserved
  1606.     interrupt disabled
  1607. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  1608.     it is safe to send a packet and wait for completion if enough stack
  1609.       space is available
  1610. --------N-2FC000-----------------------------
  1611. INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
  1612.     AX = C000h
  1613. Return: AL = FFh if installed
  1614.         DX:BX -> FAR entry point (see #03013,#03014,#03015,#03016,#03017,#03018)
  1615.         ES:SI -> signature string "NESL_EVENTS"
  1616. Program: NESL is a generic interface for event handling in ODI drivers and
  1617.       other NetWare-oriented modules.  Primarily intended to support
  1618.       power management and "hot swapping" of PCMCIA cards, but it is not
  1619.       limited to this.
  1620. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1621. SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
  1622.  
  1623. (Table 03013)
  1624. Call NESL function GetNESLConfigPointer with:
  1625.     BX = 0000h
  1626. Return: AX = completion code (0000h,8008h) (see #03019)
  1627.     ES:SI -> NESL configuration table if successful (see #03020)
  1628.     BP,DS,STACK preserved
  1629. Desc:    Obtain a pointer to the NESL Configuration Table
  1630. SeeAlso: #03014,#03017
  1631.  
  1632. (Table 03014)
  1633. Call NESL function RegisterEventProducer with:
  1634.     BX = 0001h
  1635.     ES:SI -> Producer Event Control Block (PECB) (see #03021)
  1636. Return: AX = completion code (0000h, 8005h, 8008h) (see #03019)
  1637.     ES:SI -> still points to PECB
  1638.     BP,DS,STACK preserved
  1639. Desc:    Allows a module to register as a producer of a given event class
  1640. Note:    PECB_ClassName and PECB_Flags must be filled in on entry
  1641. SeeAlso: #02870,#03015,#03016,#03017
  1642.  
  1643. (Table 03015)
  1644. Call NESL function DeRegisterEventProducer with:
  1645.     BX = 0002h
  1646.     ES:SI -> PECB previously passed to RegisterEventProducer (see #03021)
  1647. Return: AX = completion code (0000h, 8002h, 8008h) (see #03019)
  1648.     ES:SI -> still points to PECB
  1649.     BP,DS,STACK preserved
  1650. Desc:    Allows a module to de-register as a producer of a given event class
  1651. SeeAlso: #03014,#03018
  1652.  
  1653. (Table 03016)
  1654. Call NESL function EventNotification with:
  1655.     BX = 0003h
  1656.     ES:SI -> PECB previously registered (see #03021)
  1657. Return: AX = completion code (0h, 8005h, 8008h) (see #03019)
  1658.     ES:SI -> still points to PECB
  1659.     BP,DS,STACK preserved
  1660. Desc:    Allows a module to signal that an event has just occurred in a given
  1661.       event class.
  1662. Notes:    Once called, NESL will generate corresponding callouts for this
  1663.       event, as described in Table #03023.
  1664.     on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
  1665.       (see #03024) filled in to match the desired event
  1666. SeeAlso: #03014
  1667.  
  1668. (Table 03017)
  1669. Call NESL function RegisterEventConsumer with:
  1670.     BX = 0004h
  1671.     ES:SI -> Consumer Event Control Block (CECB) (see #03022)
  1672. Return: AX = completion code (0h, 8005h, 8008h) (see #03019)
  1673.     ES:SI -> still points to CECB
  1674.     BP,DS,STACK preserved
  1675. Desc:    Allows a module to register as a consumer of a given event class
  1676. Note:    on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
  1677.       filled in.
  1678. SeeAlso: #03014,#03018
  1679.  
  1680. (Table 03018)
  1681. Call NESL function DeRegisterEventConsumer with:
  1682.     BX = 0005h
  1683.     ES:SI -> CECB previously passed to RegisterEventConsumer (see #03022)
  1684. Return: AX = completion code (0h, 8002h, 8008h) (see #03019)
  1685.     ES:SI -> still points to CECB
  1686.     BP,DS,STACK preserved
  1687. Desc:    Allows a module to de-register as a consumer of a given event class
  1688. SeeAlso: #03015,#03017
  1689.  
  1690. (Table 03019)
  1691. Values for NESL Error code:
  1692.  0000h    Successful
  1693.  8002h    Bad Parameter
  1694.  8005h    Fail
  1695.  8008h    Bad Command
  1696.  
  1697. Format of NESL Configuration Table:
  1698. Offset    Size    Description    (Table 03020)
  1699.  00h    WORD    NESL_Cfg_MajVer     Major Version of this table (=1)
  1700.  02h    WORD    NESL_Cfg_MinVer     Minor Version of this table (=0)
  1701.  04h    DWORD    NESL_Cfg_ModLName   -> ASCIZ long name of NESL module
  1702.         (typically -> "NetWare Event Service Layer for 16-Bit DOS")
  1703.  08h    DWORD    NESL_Cfg_ModSName   -> ASCIZ short name of NESL module
  1704.         (typically -> "NESL")
  1705.  0Ch    WORD    NESL_Cfg_ModMajVer  Major Version of NESL itself (=1)
  1706.  0Eh    WORD    NESL_Cfg_ModMinVer  Minor Version of NESL itself (=0)
  1707.  
  1708. Format of NESL Producer Event Control Block (PECB):
  1709. Offset    Size    Description    (Table 03021)
  1710.  00h    WORD    PECB_MajVer  Major Version of this structure (=1)
  1711.  02h    WORD    PECB_MinVer  Minor Version of this structure (=0)
  1712.  04h    DWORD    PECB_NextProducer   -> next PECB.  NULL if last.
  1713.  08h    DWORD    PECB_ClassName        -> ASCIZ string identifying event
  1714.                       class (see #03025)
  1715.  0Ch    DWORD    PECB_ConsumerList   -> list of consumers for this event class
  1716.  10h    DWORD    PECB_DataPtr        -> points to additional data during events
  1717.  14h    DWORD    PECB_Flags
  1718.         Bit 0    =0  consumers should be called "top down" for this
  1719.                 event class.  (OSI level 7 down to OSI level 1)
  1720.             =1  consumers should be called "bottom up"
  1721.         Bits 1-31   Reserved =0
  1722.  18h  8 BYTEs    PECB_Reserved (all zeros)
  1723. Note:    Although the event producer provides the memory for the PECB, the
  1724.       NESL module controls this memory until the event class is
  1725.       de-registered.
  1726.     While owned by NESL, this structure should be treated as read-only,
  1727.       except for the PECB_DataPtr field.
  1728.  
  1729. Format of NESL Consumer Event Control Block (CECB):
  1730. Offset    Size    Description    (Table 03022)
  1731.  00h    WORD    CECB_MajVer  Major Version of this structure (=1)
  1732.  02h    WORD    CECB_MinVer  Minor Version of this structure (=0)
  1733.  04h    DWORD    CECB_NextConsumer   -> next CECB.  NULL if last.
  1734.  08h    DWORD    CECB_ClassName        -> ASCIZ string identifying event
  1735.                       class (see #03025)
  1736.  0Ch    DWORD    CECB_NotifProc        -> FAR CALL event handler (see #03023)
  1737.  10h    WORD    CECB_OSILevel
  1738.         Bits 4-7 = OSI Layer of this module (1 through 7)
  1739.         Bits 0-3 = relative ordering with other modules on same layer
  1740.  13h 14 BYTEs    CECB_Reserved (all zeros)
  1741. Note:    Although the event consumer provides the memory for the CECB, the
  1742.       NESL module controls this memory until the consumer is de-registered.
  1743.     While owned by NESL, this structure should be treated as read-only,
  1744.  
  1745. (Table 03023)
  1746. Values NESL Consumer Notification Procedure is called with:
  1747.     ES:SI -> Event Parameter Block (EPB) (see #03024)
  1748. Return: AX = completion code (0000h, 8005h) (see #03019)
  1749.     ES:SI -> still points to EPB
  1750. Desc:    Called by NESL to notify the consumer when an event has occurred in
  1751.       an event class for which it has registered.
  1752. SeeAlso: #03022
  1753.  
  1754. Format of NESL Event Parameter Block (EPB):
  1755. Offset    Size    Description    (Table 03024)
  1756.  00h    WORD    EPB_MajVer  Major Version of this structure (=1)
  1757.  02h    WORD    EPB_MinVer  Minor Version of this structure (=0)
  1758.  04h    DWORD    EPB_ClassName  -> ASCIZ string identifying event class
  1759.                   (see #03025)
  1760.  08h    DWORD    EPB_EventName  -> ASCIZ string identifying event within
  1761.                   class (see #03026)
  1762.  0Ch    DWORD    EPB_ModuleName -> ASCIZ string identifying module
  1763.                   producing event
  1764.  10h    DWORD    EPB_DataPtr0   -> event-defined data or NULL if not used
  1765.  14h    DWORD    EPB_DataPtr1   -> event-defined data or NULL if not used
  1766.  18h  8 BYTEs    EPB_Reserved (all zeros)
  1767.  
  1768. (Table 03025)
  1769. Values for NESL Event Class Names:
  1770.  Event Class        Description
  1771.  -------------------    -----------------------------------------
  1772.  Service Suspend    Suspension of a service.  Called top-down.
  1773.  Service Resume        Resumption/availability of a service. Called bottom-up.
  1774.  Service/Status Change    Change in status or level of service.  Called top-down.
  1775.  Suspend Request    Request to suspend a service.  Called bottom-up.
  1776. Note:    Contact Novell Labs to register new event classes.
  1777.  
  1778. (Table 03026)
  1779. Values for NESL Event Names:
  1780.  Event Name            Class            Description
  1781.  --------------------------    -------------        ---------------------------
  1782.  MLID Cable Disconnect        Service Suspend        Cable disconnected from NIC
  1783.  MLID Card Removal        Service Suspend        PCMCIA card removed
  1784.  MLID Hardware Failure        Service Suspend        Serious hardware
  1785.                               failure in NIC
  1786.  MLID Not In Range        Service Suspend        Wireless access point
  1787.                               is out of range
  1788.  MLID Shutdown            Service Suspend        MLID was shut down
  1789.  MLID Media Access Denied    Service Suspend        Access to physical
  1790.                               medium unsuccessful
  1791.  MLID Cable Reconnect        Service Resume        Cable re-connected to NIC
  1792.  MLID Card Insertion Complete    Service Resume        PCMCIA card inserted
  1793.  MLID In Range            Service Resume        Wireless access point
  1794.                               in range
  1795.  MLID Reset            Service Resume        MLID was just reset
  1796.  MLID Access Point Change    Serv/Status Change  Station has moved to
  1797.                               new access point
  1798.  MLID Speed Change        Serv/Status Change  Change in communic. speed
  1799. Note:    Contact Novell Labs to register new event names.
  1800.     For all predefined events above, EPB_DataPtr0 (see #03024) points
  1801.       to the MLID Configuration table (see AX=C000h"ODI") for the
  1802.       affected MLID.
  1803. --------N-2FC000-----------------------------
  1804. INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
  1805.     AX = C000h
  1806. Return: AL = FFh if installed
  1807.         SI = segment of resident portion
  1808. Program: NETWARN is a utility supplied with NetWare Connect to warn a
  1809.       remote dialup user when programs are about to be loaded slowly over
  1810.       the modem link.
  1811. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1812. Note:    on return, verify that it is NETWARN responding by examining signature
  1813.       at in NETWARN's data table in the resident segment (see #03027)
  1814. SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
  1815.  
  1816. Format of NETWARN Configuration structure:
  1817. Offset    Size    Description    (Table 03027)
  1818.  103h 7 BYTEs    signature string "NETWARN"
  1819.  10Ah    BYTE    major version in ASCII (="1")
  1820.  10Bh    BYTE    minor version in ASCII (="0")
  1821.  10Ch    DWORD    minimum size of EXE cared about in bytes (/S=xxxx)
  1822.  110h    WORD    same value in kilobytes (see #03028 [bit 4])
  1823.  112h    BYTE    multiplex code (AH value) actually being used
  1824.  113h    WORD    options (see #03028)
  1825.  115h    DWORD    INT 21h vector before NETWARN loaded
  1826.  119h    DWORD    INT 2Fh vector before NETWARN loaded
  1827.  11Dh 16 BYTEs    ASCIIZ local name of last device which was checked
  1828.  12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
  1829. Note:    the specified offsets are from the start of the resident segment
  1830.  
  1831. Bitfields for NETWARN options:
  1832. Bit(s)    Description    (Table 03028)
  1833.  0    ??? (=0)
  1834.  1    /U (Unload) selected (never in resident)
  1835.  2    /E (Enabled) Will trap & check EXEC's
  1836.  3    /D (Disabled) No EXEC checking done
  1837.  4    /S (Size) was set (see #03027 [offsets 010Ch and 0110h])
  1838.  5    /P (Path shown)
  1839.  6    /H or /? (Help) (never in resident)
  1840. SeeAlso: #03027
  1841. --------f-2FC000-----------------------------
  1842. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  1843.     AX = C000h
  1844. Return: AL = FFh if installed
  1845.        ES:DI -> signature string "FN32 32CHAR TSR"
  1846. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  1847. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  1848.       managing dictionary files in each directory which contains long
  1849.       filenames
  1850. --------M-2FC000-----------------------------
  1851. INT 2F - QMR - INSTALLATION CHECK
  1852.     AX = C000h
  1853. Return: AL = FFh if installed
  1854.         ES:DI -> signature string "QMR1!"
  1855. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  1856.       service interrupt (int 33h) and substitutes a fast software
  1857.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  1858. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1859. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  1860. --------V-2FC000-----------------------------
  1861. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  1862.     AX = C000h
  1863. Return: AL = FFh if installed
  1864.         BX = segment of resident code
  1865. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  1866.       Javurek
  1867. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  1868. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  1869.       resident code (addressed through BX) against its own copy of the
  1870.       resident code to complete the installation check
  1871. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  1872. Index:    screen saver;VGAsave
  1873. --------V-2FC000-----------------------------
  1874. INT 2F - AD-DOS - INSTALLATION CHECK
  1875.     AX = C000h
  1876. Return: AL = FFh if installed
  1877.         BX = 4144h ('AD')
  1878.         CX = 2D44h ('-D')
  1879.         DX = 4F53h ('OS')
  1880. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1881.       MS Windows
  1882. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1883. SeeAlso: AX=C001h"AD-DOS",AX=C003h"AD-DOS",AX=C005h"AD-DOS",AX=C007h"AD-DOS"
  1884. SeeAlso: AX=C009h"AD-DOS",AX=C020h"AD-DOS",INT 14/AX=AA01h
  1885. Index:    screen saver;AD-DOS
  1886. --------U-2FC000-----------------------------
  1887. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  1888.     AX = C000h
  1889. Return: AL = FFh if installed
  1890.         ES = segment of resident code
  1891. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  1892.       with 3-mode floppy drives to read Wang document diskettes
  1893. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1894. Note:    The installation check is completed by comparing the resident code
  1895.       with the copy in the transient program
  1896. --------i-2FC000-----------------------------
  1897. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  1898.     AX = C000h
  1899. Return: AL = FFh if multiplex number in use
  1900.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  1901. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  1902.       ASPI host manager; it is part of the Personal Measure system
  1903.       activity monitor from Spirit of Performance, Inc.
  1904. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1905. SeeAlso: AX=C000h"PMEASURE"
  1906. --------i-2FC000-----------------------------
  1907. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  1908.     AX = C000h
  1909. Return: AL = FFh if multiplex number in use
  1910.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  1911. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  1912.       is part of the Personal Measure system activity monitor from Spirit
  1913.       of Performance, Inc.
  1914. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1915. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  1916.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  1917. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  1918. --------i-2FC000-----------------------------
  1919. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  1920.     AX = C000h
  1921. Return: AL = FFh if installed
  1922.     ES:DI -> signature string "PMEASUREHOOK"
  1923.     AX = C000 if not installed, per mux id conventions
  1924.     DH = major release number (binary)
  1925.     DL = minor release number (binary)
  1926. Program: The Personal Measure system activity monitor from Spirit of
  1927.       Performance, Inc. uses an extensible series of modules to hook
  1928.       into various operating system interfaces and monitor system calls.
  1929.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  1930.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  1931.       share the same mux id.
  1932. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1933. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  1934. --------c-2FC000-----------------------------
  1935. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  1936.     AX = C000h
  1937. Return: AL = FFh if installed
  1938.         SI = signature value 20D6h
  1939.         DI = signature value 8761h
  1940.         ES:BX -> configuration table (see #03029)
  1941.         CX = ??? (0300h)
  1942.         DX = ??? (0020h)
  1943. Program: PCACHE is the resident print spooler portion of PrintCache by
  1944.       LaserTools; it may use either memory or disk space to spool output
  1945. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1946. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  1947.  
  1948. Format of PrintCache configuration table:
  1949. Offset    Size    Description    (Table 03029)
  1950.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  1951.  1Ah  2 BYTEs    ???
  1952.  1Ch    DWORD    -> data table (see #03030)
  1953.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  1954.  24h  5 BYTEs    ???
  1955.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  1956.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  1957.  37h    WORD    buffered port BIOS port number
  1958.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  1959.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  1960.  40h    WORD    physical port BIOS port number
  1961.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  1962.  47h    BYTE    port driver IRQ
  1963.  48h 21 BYTEs    ???
  1964.  5Dh    WORD    buffer size in K
  1965.  5Fh 27 BYTEs    ???
  1966.  7Ah    BYTE    popup hotkey shift states (see #00582 at INT 16/AH=02h)
  1967.  7Bh    BYTE    popup hotkey scan code (see #00006 at INT 09"IRQ1")
  1968.  7Ch  4 BYTEs    ???
  1969.  80h 20 BYTEs    ASCIZ printer type name
  1970.     ???
  1971.  
  1972. Format of PrintCache data table:
  1973. Offset    Size    Description    (Table 03030)
  1974.  00h  2 BYTEs    ???
  1975.  02h    DWORD    -> ??? entry point
  1976.     ???
  1977. --------U-2FC000-----------------------------
  1978. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  1979.     AX = C000h
  1980. Return: AL = FFh if installed
  1981.         BX = program ID (see #03031)
  1982.         CX = 464Bh (signature "FK")
  1983.         DX = revision number (DH = major, DL = minor)
  1984.         ES = resident segment of TSR
  1985. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  1986. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  1987.  
  1988. (Table 03031)
  1989. Values for Frank Kintrup TSR program ID:
  1990.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  1991.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  1992.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  1993.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  1994.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  1995. --------K-2FC000-----------------------------
  1996. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  1997.     AX = C000h
  1998. Return: AL = FFh if possibly installed
  1999. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  2000. SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  2001. --------V-2FC000-----------------------------
  2002. INT 2F - DIMWIT - INSTALLATION CHECK
  2003.     AX = C000h
  2004. Return: AL = FFh if installed
  2005.         ES:DI -> signature string "DIMDOS" or "DIMWIN"
  2006. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  2007. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2008. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  2009. Index:    screen saver;DIMWIT
  2010. --------F-2FC000BX444B-----------------------
  2011. INT 2F - METZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2012.     AX = C000h
  2013.     BX = 444Bh ('DK')
  2014.     CX = 4A4Eh ('AN')
  2015. Return: AL = status
  2016.         00h not installed, OK to install
  2017.         FFh installed
  2018.         BX = 646Bh ('dk')
  2019.         CX = 6A6Eh ('an')
  2020. Range:    AH=C0h to AH=FFh, selected automatically
  2021. SeeAlso: AH=C0h"METZ"
  2022. --------V-2FC000-----------------------------
  2023. INT 2F U - TSENGP.COM - INSTALLATION CHECK
  2024.     AX = C000h
  2025. Return: AL = status
  2026.         00h not installed, OK to install
  2027.         FFh installed
  2028.         DS = segment of resident code
  2029. Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
  2030.       between some applications and Tseng ET4000-based video adapters
  2031. Range:    AH=C0h to AH=FFh, selected automatically
  2032. Note:    the installation check is completed by comparing the first eleven
  2033.       bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
  2034.       80h FCh 07h 74h 05h EAh)
  2035. --------N-2FC000-----------------------------
  2036. INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
  2037.     AX = C000h
  2038. Return: AL = FFh if one of the components is installed
  2039.     CX:BX -> signature within LLRA component:
  2040.         "TSI_LapLinkCore" for LLRA1.EXE
  2041.         "TSI_Blackbird"   for LLRA2.EXE
  2042.         "TSI_Redirector"  for LLRA3.EXE
  2043.         "TSI_Compression" for LLRA4.EXE
  2044.     DL = major version number
  2045.     DH = minor version number
  2046. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2047. Note:    LapLink components are installed in the order listed above, but not
  2048.       necessarily all four; each gets its own multiplex number (default
  2049.       C0h-C3h)
  2050. SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
  2051. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  2052. SeeAlso: AX=C3F1h"LapLink"
  2053. --------M-2FC001-----------------------------
  2054. INT 2F - QMR - REQUEST HARDWARE RESET
  2055.     AX = C001h
  2056. Return: ES = QMR code segment
  2057.     AL destroyed
  2058. Desc:    this function is used to force a full mouse reset when QMR is installed
  2059. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2060. --------V-2FC001-----------------------------
  2061. INT 2F - DIMWIT - GET CONFIGURATION DATA
  2062.     AX = C001h
  2063. Return: ES:DI -> TSR configuration data (see #03032)
  2064. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  2065. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2066. SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
  2067. Index:    screen saver;DIMWIT
  2068.  
  2069. Format of DIMWIT TSR configuration data:
  2070. Offset    Size    Description    (Table 03032)
  2071.  00h    WORD    blanking delay in clock ticks
  2072.  02h    BYTE    instant-blanking hotkey scan code (see #00006)
  2073.         Ctrl and Alt must also be pressed
  2074. --------V-2FC001ES0000-----------------------
  2075. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2076.     AX = C001h
  2077.     ES = 0000h
  2078. Return: AL = 00h if successful
  2079.         ES = AD-DOS TSR Code Segment
  2080. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  2081. Index:    screen saver;AD-DOS
  2082. --------c-2FC001-----------------------------
  2083. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  2084.     AX = C001h
  2085. Return: AL = FFh if installed
  2086.         ES:BX -> ???
  2087.         ES:DX -> ???
  2088.         ES:SI -> ???
  2089.         ES:DI -> ??? (equivalent to AX=C002h)
  2090. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  2091. --------U-2FC001-----------------------------
  2092. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  2093.     AX = C001h
  2094. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2095. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2096. --------K-2FC001CX03FB-----------------------
  2097. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
  2098.     AX = C001h
  2099.     CX = 03FBh return address to continue uninstall if possible
  2100. Return: program uninstalled
  2101. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  2102. SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  2103. --------i-2FC001-----------------------------
  2104. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  2105.     AX = C001h
  2106.     DX = segment of PMEASURE.EXE or 0000h
  2107.     BX = offset in PMEASURE.EXE or 0000h
  2108.     CX = offset in PMEASURE.EXE or 0000h
  2109. Return: None
  2110. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2111.       is part of the Personal Measure system activity monitor from Spirit
  2112.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  2113.       modules whether or not it is running and to pass information about
  2114.       shared data and procedures.
  2115. Warning: This information documents a function that is private to Personal
  2116.       Measure and is provided as information only.    It should NOT be called
  2117.       by any software other than Personal Measure.
  2118. SeeAlso: AX=C000h"PERSONAL MEASURE"
  2119. --------V-2FC002-----------------------------
  2120. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2121.     AX = C002h
  2122. Return: AL = 00h if successful
  2123.         BX = status
  2124.         0000h no input since last check
  2125.         0001h new input available
  2126. Note:    this call also resets the new-input flag
  2127. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2128. Index:    screen saver;AD-DOS
  2129. --------M-2FC002-----------------------------
  2130. INT 2F - QMR - DISABLE QMR
  2131.     AX = C002h
  2132. Return: ES = QMR code segment
  2133.     AL destroyed
  2134. Desc:    this call temporarily disables QMR
  2135. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2136. --------c-2FC002-----------------------------
  2137. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  2138.     AX = C002h
  2139. Return: AX = ??? in K
  2140.     BX = size of print buffer in K
  2141. Program: PCACHE is the resident print spooler portion of PrintCache by
  2142.       LaserTools; it may use either memory or disk space to spool output
  2143. SeeAlso: AX=C000h"PCACHE"
  2144. --------U-2FC002-----------------------------
  2145. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  2146.     AX = C002h
  2147. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  2148. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  2149. --------N-2FC002-----------------------------
  2150. INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
  2151.     AX = C002h
  2152.     details not yet available
  2153. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2154. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  2155. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  2156. --------V-2FC003-----------------------------
  2157. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2158.     AX = C003h
  2159.     BX = minutes to wait before blanking screen
  2160. Return: AL = 00h if successful
  2161. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2162.       MS Windows
  2163. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2164. Note:    this call also resets the delay timer
  2165. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2166. Index:    screen saver;AD-DOS
  2167. --------M-2FC003-----------------------------
  2168. INT 2F - QMR - ENABLE QMR
  2169.     AX = C003h
  2170. Return: ES = QMR code segment
  2171.     AL destroyed
  2172. Desc:    this call enables QMR after it has been disabled
  2173. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2174. --------c-2FC003-----------------------------
  2175. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2176.     AX = C003h
  2177. Return: BX destroyed
  2178. SeeAlso: AX=C004h"PCACHE"
  2179. --------V-2FC004-----------------------------
  2180. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2181.     AX = C004h
  2182. Return: AL = 00h if successful
  2183.         BX = minutes to wait before blanking screen
  2184. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  2185. Index:    screen saver;AD-DOS
  2186. --------c-2FC004-----------------------------
  2187. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2188.     AX = C004h
  2189. Return: BX destroyed
  2190. SeeAlso: AX=C003h"PCACHE"
  2191. --------V-2FC005-----------------------------
  2192. INT 2F - AD-DOS - SET BLANKER STATUS
  2193.     AX = C005h
  2194.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2195. Return: AL = 00h if successful
  2196. SeeAlso: AX=C006h"AD-DOS"
  2197. Index:    screen saver;AD-DOS
  2198. --------c-2FC005-----------------------------
  2199. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2200.     AX = C005h
  2201.     ???
  2202. Return: BX destroyed
  2203.     ???
  2204. Program: PCACHE is the resident print spooler portion of PrintCache by
  2205.       LaserTools; it may use either memory or disk space to spool output
  2206. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2207. SeeAlso: AX=C000h"PCACHE"
  2208. --------V-2FC006-----------------------------
  2209. INT 2F - AD-DOS - GET BLANKER STATUS
  2210.     AX = C006h
  2211. Return: AL = 00h if successful
  2212.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2213. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2214.       MS Windows
  2215. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2216. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  2217. Index:    screen saver;AD-DOS
  2218. --------c-2FC006-----------------------------
  2219. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2220.     AX = C006h
  2221.     ???
  2222. Return: BX destroyed
  2223.     ???
  2224. Note:    this function appears to be identical to AX=C007h
  2225. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  2226. --------V-2FC007-----------------------------
  2227. INT 2F - AD-DOS - SET HOT KEY
  2228.     AX = C007h
  2229.     BX = hot key
  2230.     CL = hot key shift status
  2231. Return: AL = 00h if successful
  2232. SeeAlso: AX=C008h"AD-DOS"
  2233. Index:    screen saver;AD-DOS
  2234. --------c-2FC007-----------------------------
  2235. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2236.     AX = C007h
  2237.     ???
  2238. Return: BX destroyed
  2239.     ???
  2240. Note:    this function appears to be identical to AX=C006h
  2241. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  2242. --------V-2FC008-----------------------------
  2243. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2244.     AX = C008h
  2245. Return: AX = status
  2246.         0000h successful
  2247.         BX = Hot Key
  2248.         CL = Hot Key Shift Status
  2249.         0008h otherwise
  2250. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  2251. Index:    screen saver;AD-DOS
  2252. --------c-2FC008-----------------------------
  2253. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2254.     AX = C008h
  2255. Return: BX destroyed
  2256. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  2257. --------V-2FC009-----------------------------
  2258. INT 2F - AD-DOS - UNBLANK MONITOR
  2259.     AX = C009h
  2260. Return: AL = 00h if successful
  2261. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2262.       MS Windows
  2263. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2264. Note:    this function works by simulating keyboard activity
  2265. Index:    screen saver;AD-DOS
  2266. --------c-2FC009-----------------------------
  2267. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2268.     AX = C009h
  2269. Return: BX destroyed
  2270. Program: PCACHE is the resident print spooler portion of PrintCache by
  2271.       LaserTools; it may use either memory or disk space to spool output
  2272. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2273. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  2274. --------V-2FC00A-----------------------------
  2275. INT 2F - AD-DOS - ???
  2276.     AX = C00Ah
  2277. Return: AX = status
  2278.         0000h successful
  2279.         BH = ??
  2280.         BL = ??
  2281.         000Ah failed
  2282. Index:    screen saver;AD-DOS
  2283. --------c-2FC00A-----------------------------
  2284. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2285.     AX = C00Ah
  2286.     ???
  2287. Return: AH = bit flags
  2288.         bit 5: ???
  2289.     AL = bit flags
  2290.         bit 4: ???
  2291.         bit 3: ???
  2292.     BX destroyed
  2293.     ???
  2294. SeeAlso: AX=C000h"PCACHE"
  2295. --------V-2FC00B-----------------------------
  2296. INT 2F - AD-DOS - ???
  2297.     AX = C00Bh
  2298. Return: AX = status
  2299.         0000h successful
  2300.         000Bh failed
  2301. Index:    screen saver;AD-DOS
  2302. --------c-2FC00B-----------------------------
  2303. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2304.     AX = C00Bh
  2305. Return: BX destroyed
  2306. SeeAlso: AX=C000h"PCACHE"
  2307. --------V-2FC00C-----------------------------
  2308. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2309.     AX = C00Ch
  2310. Return: AX = status
  2311.         0000h successful
  2312.         000Ch failed
  2313. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2314.       MS Windows
  2315. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2316. Index:    screen saver;AD-DOS
  2317. --------c-2FC00C-----------------------------
  2318. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2319.     AX = C00Ch
  2320. Return: AX = ??? (0000h)
  2321.     BX = ??? (0000h)
  2322.     CX = ??? (0100h)
  2323.     DL = ???
  2324.     DH = ???
  2325. SeeAlso: AX=C000h"PCACHE"
  2326. --------c-2FC00D-----------------------------
  2327. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  2328.     AX = C00Dh
  2329.     DL = ???
  2330. Return: BX destroyed
  2331. Program: PCACHE is the resident print spooler portion of PrintCache by
  2332.       LaserTools; it may use either memory or disk space to spool output
  2333. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2334. SeeAlso: AX=C000h"PCACHE"
  2335. --------V-2FC00E-----------------------------
  2336. INT 2F - AD-DOS - SET PASSWORD STATUS
  2337.     AX = C00Eh
  2338.     BX = new state (0000h disabled, 0001h enabled)
  2339. Return: ???
  2340. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  2341. Index:    screen saver;AD-DOS
  2342. --------c-2FC00E-----------------------------
  2343. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  2344.     AX = C00Eh
  2345.     ES:DX -> ???
  2346. Return: BX destroyed
  2347. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  2348.       but ignored if already set; a counter is incremented
  2349. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  2350. --------V-2FC00F-----------------------------
  2351. INT 2F - AD-DOS - GET PASSWORD STATUS
  2352.     AX = C00Fh
  2353. Return: BX = current state (0000h disabled, 0001h enabled)
  2354. SeeAlso: AX=C00Eh"AD-DOS"
  2355. Index:    screen saver;AD-DOS
  2356. --------c-2FC00F-----------------------------
  2357. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  2358.     AX = C00Fh
  2359. Return: BX destroyed
  2360. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  2361.       internal pointer variable to 0000h:0000h when it reaches zero
  2362. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  2363. --------c-2FC010-----------------------------
  2364. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2365.     AX = C010h
  2366.     CX = index of ??? table (00h-02h, others treated as 00h)
  2367.     SI = offset into data table
  2368. Return: AL = byte at specified offset into table
  2369.     BX destroyed
  2370. SeeAlso: AX=C000h"PCACHE"
  2371. --------c-2FC011-----------------------------
  2372. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2373.     AX = C011h
  2374. Return: AX = ??? (0007h)
  2375.     BX = ??? (0001h)
  2376.     CH = ???
  2377.     CL = ???
  2378. SeeAlso: AX=C000h"PCACHE"
  2379. --------c-2FC012-----------------------------
  2380. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2381.     AX = C012h
  2382. Return: AX = ???
  2383.     BX = ???
  2384.     CX = ???
  2385.     DX = ???
  2386. SeeAlso: AX=C000h"PCACHE"
  2387. --------c-2FC013-----------------------------
  2388. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2389.     AX = C013h
  2390.     ???
  2391. Return: BX destroyed
  2392.     ???
  2393. Program: PCACHE is the resident print spooler portion of PrintCache by
  2394.       LaserTools; it may use either memory or disk space to spool output
  2395. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2396. SeeAlso: AX=C000h"PCACHE"
  2397. --------c-2FC014-----------------------------
  2398. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2399.     AX = C014h
  2400.     ???
  2401. Return: BX destroyed
  2402.     ???
  2403. SeeAlso: AX=C000h"PCACHE"
  2404. --------c-2FC015-----------------------------
  2405. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2406.     AX = C015h
  2407.     ???
  2408. Return: BX destroyed
  2409.     ???
  2410. SeeAlso: AX=C000h"PCACHE"
  2411. --------c-2FC016-----------------------------
  2412. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  2413.     AX = C016h
  2414. Return: BX destroyed
  2415. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  2416. --------c-2FC017-----------------------------
  2417. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  2418.     AX = C017h
  2419. Return: BX destroyed
  2420. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  2421. --------c-2FC018-----------------------------
  2422. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2423.     AX = C018h
  2424.     ???
  2425. Return: BX destroyed
  2426.     ???
  2427. Note:    the first instruction of this function is an indirect jump which points
  2428.       at a RET by default
  2429. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  2430. --------c-2FC019-----------------------------
  2431. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2432.     AX = C019h
  2433.     ???
  2434. Return: BX destroyed
  2435.     ???
  2436. Note:    the first instruction of this function is an indirect jump which points
  2437.       at a RET by default
  2438. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  2439. --------c-2FC01A-----------------------------
  2440. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2441.     AX = C01Ah
  2442. Return: BX destroyed
  2443. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  2444. --------c-2FC01B-----------------------------
  2445. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2446.     AX = C01Bh
  2447. Return: BX destroyed
  2448. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  2449. --------c-2FC01C-----------------------------
  2450. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2451.     AX = C01Ch
  2452.     ???
  2453. Return: AX = ???
  2454.     BX destroyed
  2455. SeeAlso: AX=C000h"PCACHE"
  2456. --------c-2FC01D-----------------------------
  2457. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2458.     AX = C01Dh to C01Fh
  2459. Return: BX destroyed
  2460. Program: PCACHE is the resident print spooler portion of PrintCache by
  2461.       LaserTools; it may use either memory or disk space to spool output
  2462. Range:    AH=C0h to AH=FFh, selected by commandline switch
  2463. SeeAlso: AX=C000h"PCACHE"
  2464. --------V-2FC020-----------------------------
  2465. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2466.     AX = C020h
  2467. Return: AL = 00h if successful
  2468.         BX = VxD API Status
  2469.         0000h no error
  2470.         0001h error
  2471.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  2472.               is running
  2473.         0200h VM API entry point not found (VxD not installed)
  2474. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2475. Note:    this call resets the VxD API Status to zero
  2476. SeeAlso: AX=1602h,AX=1607h"CALL OUT API"
  2477. Index:    screen saver;AD-DOS
  2478. --------V-2FC04E-----------------------------
  2479. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  2480.     AX = C04Eh
  2481. Return: AL = 4Fh if Explosiv is running but not memory-resident
  2482. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2483.       by H&G Software (Reidar Gresseth and Chris Hook)
  2484. Range:    AH=C0h to AH=C9h, selected by configuration
  2485. SeeAlso: AX=C050h
  2486. Index:    screen saver;Explosiv
  2487. --------V-2FC050-----------------------------
  2488. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  2489.     AX = C050h
  2490. Return: AL = 51h if installed
  2491.     ---v3.0+ ---
  2492.         BX = interval in clock ticks
  2493.         CH = animation display color (00h mono, 01h tinge, 02h color)
  2494.         CL = animation delay factor
  2495.         DH = animation parameters
  2496.         DL = INT 10 checking (00h on, 01h off)
  2497.         SI = number of bytes available for animation code
  2498.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  2499. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2500.       by H&G Software (Reidar Gresseth and Chris Hook)
  2501. Range:    AH=C0h to AH=C9h, selected by configuration
  2502. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  2503. SeeAlso: INT 14/AX=AA01h
  2504. Index:    screen saver;Explosiv
  2505. --------V-2FC052-----------------------------
  2506. INT 2F - Explosiv v2.00+ - UNINSTALL
  2507.     AX = C052h
  2508.     DX:BX = address to return to on successful uninstall
  2509. Return: at specified address if successful
  2510.     AL = 53h on error
  2511. Note:    specified return address must have the segment of the caller's PSP
  2512. SeeAlso: AX=C050h
  2513. Index:    screen saver;Explosiv
  2514. --------V-2FC054-----------------------------
  2515. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  2516.     AX = C054h
  2517. Return: AL = delay factor
  2518. SeeAlso: AX=C057h
  2519. Index:    screen saver;Explosiv
  2520. --------V-2FC054-----------------------------
  2521. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  2522.     AX = C054h
  2523.     BX = new interval in clock ticks
  2524.     CH = animation display color (00h mono, 01h tinge, 02h color)
  2525.     CL = animation delay factor
  2526.     DH = animation parameters
  2527.     DL = INT 10 checking (00h on, 01h off)
  2528. SeeAlso: AX=C050h
  2529. Index:    screen saver;Explosiv
  2530. --------V-2FC055-----------------------------
  2531. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  2532.     AX = C055h
  2533.     BX = new interval in clock ticks
  2534. Index:    screen saver;Explosiv
  2535. --------V-2FC056-----------------------------
  2536. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  2537.     AX = C056h
  2538.     BL = animated display type (00h mono, 01h color)
  2539. SeeAlso: AX=C058h"v2.x"
  2540. Index:    screen saver;Explosiv
  2541. --------V-2FC056-----------------------------
  2542. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  2543.     AX = C056h
  2544.     BX = new state
  2545.         0000h disabled
  2546.         0100h enabled
  2547.         0101h enabled, but never blank
  2548.         0102h enabled, always blank
  2549. --------V-2FC057-----------------------------
  2550. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  2551.     AX = C057h
  2552.     BL = delay factor
  2553. SeeAlso: AX=C054h"v2.x"
  2554. Index:    screen saver;Explosiv
  2555. --------V-2FC058-----------------------------
  2556. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  2557.     AX = C058h
  2558.     BL = animation parameter
  2559. Note:    the animation parameter has different interpretations for each display
  2560. SeeAlso: AX=C056h"v2.x"
  2561. Index:    screen saver;Explosiv
  2562. --------V-2FC058-----------------------------
  2563. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  2564.     AX = C058h
  2565.     BX = file handle for file containing display code
  2566.     CX = number of bytes to load
  2567.     DX = offset at which animation code should be loaded
  2568. Return: AL = status (see #03033)
  2569. Note:    if AL=00h-03h on return, the file will be closed
  2570. Index:    screen saver;Explosiv
  2571.  
  2572. (Table 03033)
  2573. Values for Explosiv function status:
  2574.  00h    successful
  2575.  01h    code too large to available space
  2576.  02h    no data read, load aborted
  2577.  03h    incomplete load, default blanking display loaded instead
  2578.  58h    unexpected offset in DX
  2579. --------V-2FC059-----------------------------
  2580. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  2581.     AX = C059h
  2582. Note:    clears flag set by AX=C05Ah
  2583. SeeAlso: AX=C05Ah
  2584. Index:    screen saver;Explosiv
  2585. --------V-2FC05A-----------------------------
  2586. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  2587.     AX = C05Ah
  2588.     BL = ???
  2589. Note:    sets flag cleared by AX=C059h then stores BL
  2590. SeeAlso: AX=C059h,AX=C05Bh
  2591. Index:    screen saver;Explosiv
  2592. --------V-2FC05B-----------------------------
  2593. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  2594.     AX = C05Bh
  2595.     BL = animation display
  2596. Note:    this function fails silently if the requested display is not in memory
  2597. SeeAlso: AX=C05Ah,AX=C05Ch
  2598. Index:    screen saver;Explosiv
  2599. --------V-2FC05C-----------------------------
  2600. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  2601.     AX = C05Ch
  2602.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  2603. SeeAlso: AX=C05Bh
  2604. Index:    screen saver;Explosiv
  2605. --------v-2FC080-----------------------------
  2606. INT 2F U - AMI IAM.SYS - INSTALL ??? CALLBACK
  2607.     AX = C080h
  2608.     CX:DX -> ??? callback
  2609.     DI = segment of ??? buffer (first WORD copied into IAM.SYS)
  2610. Program: IAM.SYS is the Illegal Activity Monitor portion of American
  2611.       Megatrends, Inc.'s PC-Defender anti-virus product
  2612. Note:    also sets ??? flag
  2613. SeeAlso: AX=C081h
  2614.  
  2615. Format of IAM.SYS buffer:
  2616. Offset    Size    Description    (Table 03034)
  2617.  00h    BYTE    ???
  2618.  01h    BYTE    ???
  2619.  02h  N BYTEs    ??? (ASCIZ strings)
  2620. --------v-2FC081-----------------------------
  2621. INT 2F U - AMI IAM.SYS - CLEAR ???
  2622.     AX = C081h
  2623. Desc:    clears the ??? flag that AX=C080h sets
  2624. SeeAlso: AX=C080h
  2625. --------K-2FC0AE-----------------------------
  2626. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  2627.     AX = C0AEh
  2628. Return: AX = 4453h if installed
  2629.     CX = 5259h if installed
  2630. Range:    AH=C0h to AH=FFh, selected by scanning for signature
  2631. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
  2632. --------K-2FC0AF-----------------------------
  2633. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
  2634.     AX = C0AFh
  2635. Return: ES:DI -> buffer (behind code)
  2636. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  2637. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
  2638. --------N-2FC100-----------------------------
  2639. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  2640.     AX = C100h
  2641. Return: AL = FFh if installed
  2642.         ES:SI -> signature string "STP-IPX$"
  2643.         BX = version??? (0001h for v1.00)
  2644.         DI corrupted
  2645. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  2646.       multiplex numbers to find a free one, as LSL does
  2647. SeeAlso: AX=C000h"LSL",AX=C101h
  2648. --------N-2FC101-----------------------------
  2649. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  2650.     AX = C101h
  2651. Return: AL = status???
  2652.     BX corrupted
  2653. SeeAlso: AX=C101h
  2654. --------N-2FC205-----------------------------
  2655. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  2656.     AX = C205h
  2657.     details not yet available
  2658. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2659. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  2660. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  2661. --------N-2FC2F0-----------------------------
  2662. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  2663.     AX = C2F0h
  2664.     details not yet available
  2665. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2666. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2667. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  2668. --------N-2FC2F1-----------------------------
  2669. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  2670.     AX = C2F1h
  2671.     details not yet available
  2672. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2673. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2674. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
  2675. --------d-2FC300-----------------------------
  2676. INT 2F - SETWPR.COM - INSTALLATION CHECK
  2677.     AX = C300h
  2678. Return: AL = FFh if installed
  2679. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  2680. SeeAlso: AX=C302h"SETWPR"
  2681. --------k-2FC300DX0000-----------------------
  2682. INT 2F U - SpaceManager - INSTALLATION CHECK
  2683.     AX = C300h
  2684.     DX = 0000h
  2685. Return: AL = FFh if any SpaceManager programs installed
  2686.         BX = 6F73h
  2687.         CX = 6F68h
  2688. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  2689.       Systems, Inc.
  2690. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  2691. SeeAlso: AX=C300h/BX=4F53h
  2692. --------k-2FC300BX4F53-----------------------
  2693. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  2694.     AX = C300h
  2695.     BX = 4F53h ('OS')
  2696.     CX = 4F48h ('OH')
  2697.     DX = program identifier (see #03035) or 0666h for any SpaceManager prog
  2698. Return: AL = FFh if BX/CX as specified and specified program installed
  2699.         BX = 6F73h ('os')
  2700.         CX = 6F68h ('oh')
  2701. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  2702. Note:    this call is chained if BX,CX, or DX are not as specified above
  2703. SeeAlso: AX=C300h/DX=0000h
  2704.  
  2705. (Table 03035)
  2706. Values for SpaceManager program identifier:
  2707.  9000h    SMOUNT (SuperMount)
  2708.  9001h    SELECTC (SelectCompress)
  2709.  9002h    SUPERX (SuperExchange)
  2710.  9003h    FORTUNE (FortuneTeller)
  2711. --------k-2FC301-----------------------------
  2712. INT 2F U - SpaceManager - ???
  2713.     AX = C301h
  2714.     DX = program identifier (9000h,9001h,9003h) (see #03035)
  2715.     ???
  2716. Return: ???
  2717. --------N-2FC301-----------------------------
  2718. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  2719.     AX = C301h
  2720.     details not yet available
  2721. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2722. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2723. SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
  2724. --------k-2FC302-----------------------------
  2725. INT 2F U - SpaceManager - ENABLE PROGRAM
  2726.     AX = C302h
  2727.     DX = program identifier (9000h,9001h,9003h) (see #03035)
  2728. Return: AX destroyed
  2729. SeeAlso: AX=C303h,AX=C306h
  2730. --------d-2FC302-----------------------------
  2731. INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
  2732.     AX = C302h
  2733.     BL = new state
  2734.         00h disk may be written
  2735.         01h disk write-protected
  2736. Return: AL = FFh if installed
  2737. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  2738. SeeAlso: AX=C300h"SETWPR"
  2739. --------k-2FC303-----------------------------
  2740. INT 2F U - SpaceManager - DISABLE PROGRAM
  2741.     AX = C303h
  2742.     DX = program identifier (9000h,9001h,9003h) (see #03035)
  2743. Return: AX destroyed
  2744. SeeAlso: AX=C302h,AX=C306h
  2745. --------k-2FC304-----------------------------
  2746. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  2747.     AX = C304h
  2748.     DX = program identifier (9000h,9001h,9003h) (see #03035)
  2749. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  2750.     AX destroyed
  2751. --------k-2FC305DX9003-----------------------
  2752. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  2753.     AX = C305h
  2754.     DX = 9003h
  2755. Return: AX destroyed
  2756. --------k-2FC305-----------------------------
  2757. INT 2F U - SpaceManager - ???
  2758.     AX = C305h
  2759.     DX = program identifier (9000h,9001h) (see #03035)
  2760.     ???
  2761. Return: ???
  2762. --------k-2FC306-----------------------------
  2763. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  2764.     AX = C306h
  2765.     DX = program identifier (9000h,9001h,9003h) (see #03035)
  2766. Return: AL = current state (00h disabled, FAh enabled)
  2767.     AH destroyed
  2768. SeeAlso: AX=C302h,AX=C303h
  2769. --------k-2FC307DX9001-----------------------
  2770. INT 2F U - SpaceManager - SELECTC - ???
  2771.     AX = C307h
  2772.     DX = 9001h
  2773.     BX = ???
  2774.     CX = ???
  2775.     ???
  2776. Return: ???
  2777. --------k-2FC308DX9001-----------------------
  2778. INT 2F U - SpaceManager - SELECTC - ???
  2779.     AX = C308h
  2780.     DX = 9001h
  2781.     ???
  2782. Return: ???
  2783. --------N-2FC3F0-----------------------------
  2784. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  2785.     AX = C3F0h
  2786.     details not yet available
  2787. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2788. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2789. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
  2790. --------N-2FC3F1-----------------------------
  2791. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  2792.     AX = C3F1h
  2793.     details not yet available
  2794. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2795. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2796. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  2797. --------N-2FC500-----------------------------
  2798. INT 2F - PC-DOS Econet v1.05 - INSTALLATION CHECK
  2799.     AX = C500h
  2800. Return: AL = status
  2801.         00h not installed, OK to install
  2802.         01h not installed, can't install
  2803.         FFh installed
  2804. Note:    the interrupt-enable state will be preserved, but interrupts may be
  2805.       enabled during processing of this function
  2806. SeeAlso: AX=C501h,AX=C508h
  2807. --------N-2FC501-----------------------------
  2808. INT 2F - PC-DOS Econet v1.05 - RESET BOARD AND DRIVER
  2809.     AX = C501h
  2810. Return:    AX = return code (see #03037)
  2811. Desc:    reset both the network board and the driver software
  2812. Notes:    use this function with caution, as it will affect any other resident
  2813.       software using the network board
  2814.     the interrupt-enable state will be preserved, but interrupts may be
  2815.       enabled during processing of this function
  2816. SeeAlso: AX=C500h
  2817. --------N-2FC502-----------------------------
  2818. INT 2F - PC-DOS Econet v1.05 - PERFORM NETWORK OPERATION
  2819.     AX = C502h
  2820.     DS:DX -> control block (see #03036)
  2821. Return: AX = return code (see #03037) (same as returned in control block)
  2822. Note:    the interrupt-enable state will be preserved, but interrupts may be
  2823.       enabled during processing of this function
  2824. SeeAlso: AX=C500h
  2825.  
  2826. Format of Econet control block:
  2827. Offset    Size    Description    (Table 03036)
  2828.  00h    DWORD    -> command block (see #03038)
  2829.  04h    WORD    length of transmit data block
  2830.  06h    DWORD    -> transmit data block
  2831.  0Ah    WORD    length of reply block (set to 0000h prior to call)
  2832.  0Ch    DWORD    -> reply block
  2833.  10h    WORD    return code (set to 0000h prior to call) (see #03037)
  2834.  12h    DWORD    reserved for Econet use
  2835.  
  2836. (Table 03037)
  2837. Values for Econet return code:
  2838.  0000h    successful
  2839.  0001h    bad command in command block
  2840.  0002h    no handles left
  2841.  0003h    bad handle
  2842.  0004h    bad argument in command
  2843.  0005h    buffer too small
  2844.  0006h    kill condition failed
  2845.  0007h    control block in use
  2846.  007Fh    command aborted
  2847.  01xxh    retryable board error XXh
  2848.  02xxh    fatal board error XXh
  2849.  0300h    invalid subfunction number in AL
  2850.  0301h    timeout
  2851.  03xxh    other driver errors
  2852. SeeAlso: #03036
  2853.  
  2854. Format of Econet command block:
  2855. Offset    Size    Description    (Table 03038)
  2856.  00h    BYTE    command code (see #03039)
  2857. ---command 00h---
  2858.  01h    BYTE    direction (00h = read initialization data, 01h = set init data)
  2859.  02h    WORD    "TxCB" transmit control block size
  2860.  04h    WORD    "RxCB" receive control block size
  2861.         Notes:    TxCB and RxCB are always the same size in v1.05,
  2862.               permitting any CB to be used for either receive
  2863.               or transmit
  2864.             this command should not be used by applications to
  2865.               set the buffer sizes
  2866.  06h  6 BYTEs    padding (0)
  2867. ---command 01h---
  2868.  01h    BYTE    port number (00h = receive on all ports)
  2869.         if the RxCB is opened for RPC, the port number indicates the
  2870.           allowable RPC (see #03040)
  2871.  02h    WORD    station number (FEFFh = broadcast)
  2872.  04h    BYTE    RPC flags
  2873.         bit 7: CB is open for RPCs only
  2874.         bit 6: restrict to RPC number given in next field
  2875.  05h    WORD    RPC number
  2876.  07h    BYTE    timeout in 1/2-second units (00h = never)
  2877.         if a timeout occurs, the RxCB can still receive data, and may
  2878.           generate another event after the timeout unless it is
  2879.           explicitly killed
  2880.  08h  4 BYTEs    padding (0)
  2881. ---command 02h---
  2882.  01h    BYTE    control byte
  2883.  02h    BYTE    port number
  2884.  03h    WORD    station number
  2885.  05h    BYTE    number of retries
  2886.  06h    WORD    length of data to be sent (bits 14-0), 0000h allowed
  2887.         if bit 15 is set, no data will be transferred, but this field
  2888.           will be updated (needed for peeking)
  2889.  08h    DWORD    -> destination address on remote machine
  2890. ---command 03h---
  2891.  01h    BYTE    Control Block Handle
  2892.         FEh first filled-in RxCB
  2893.         FFh first TxCB which has been sent
  2894.  02h 10 BYTEs    padding (0)
  2895. ---command 04h---
  2896.  01h    BYTE    Control Block Handle
  2897.  02h    BYTE    kill condition
  2898.         00h always
  2899.         01h kill only if bit7 of control byte is clear
  2900.         81h kill only if bit7 of control byte is set
  2901.  03h  9 BYTEs    padding (0)
  2902.         Notes:    control blocks are not freed until explicitly killed
  2903.             because all TxCBs for a given destination are stored
  2904.               on a separate subchain, it is necessary to kill all
  2905.               failed TxCBs to a given destination before any new
  2906.               ones are opened to that destination
  2907. ---command 06h---
  2908.  01h    BYTE    Control Block Handle
  2909.  02h    WORD    starting byte within CB to read
  2910.  04h    WORD    number of bytes
  2911.         if 0000h or greater than remaining bytes in CB, return all
  2912.           bytes from starting byte to end of CB
  2913.  06h  6 BYTEs    padding (0)
  2914. ---command 07h---
  2915.  01h    BYTE    subfunction
  2916.         00h-0Fh get/set M/C type (bit N=1 indicates to set byte N)
  2917.             four data bytes
  2918.         10h get station number
  2919.         11h set station number
  2920.         12h get Tx pause in 5ms units (default 20)
  2921.         13h set Tx pause
  2922.         14h get software version numbers
  2923.         16h get event enable mask
  2924.         17h set event enable mask
  2925.         18h get number of non-volatile bytes available
  2926.         80h+2N get non-volatile byte N
  2927.         81h+2N set non-volatile byte N
  2928.  02h    var    new data
  2929. Note:    all command blocks should be padded to twelve bytes with zeros if
  2930.       needed
  2931. SeeAlso: #03036
  2932.  
  2933. (Table 03039)
  2934. Values for Econet command code:
  2935.  00h    initialize
  2936.  01h    open receive
  2937.  02h    open transmit
  2938.  03h    poll
  2939.  04h    kill
  2940.  06h    read
  2941.  07h    get/set system parameters
  2942. SeeAlso: #03038
  2943.  
  2944. (Table 03040)
  2945. Values for Econet RPC type:
  2946.  00h    all
  2947.  81h    peek
  2948.  82h    poke
  2949.  83h    remote JSR
  2950.  84h    remote procedure call
  2951.  85h    OS procedure
  2952.  86h    Halt
  2953.  87h    Continue
  2954. SeeAlso: #03038
  2955.  
  2956. Format of Econet Reply Block (command 00h):
  2957. Offset    Size    Description    (Table 03041)
  2958.  00h    WORD    TxCB size (default is 0500h, the maximum Econet packet length)
  2959.  02h    WORD    RxCB size
  2960.  04h    BYTE    number of TxCBs allocated    
  2961.  05h    BYTE    number of RxCBs allocated    
  2962. SeeAlso: #03036,#03042,#03044
  2963.  
  2964. Format of Econet Reply Block (commands 01h,02h):
  2965. Offset    Size    Description    (Table 03042)
  2966.  00h    BYTE    control block handle
  2967. SeeAlso: #03036,#03041,#03045
  2968.  
  2969. Format of Econet Reply Block (command 03h):
  2970. Offset    Size    Description    (Table 03043)
  2971.  00h    BYTE    CB number (when wildcard specified for poll)
  2972.  01h    BYTE    control
  2973.         (RxCB) 00h until received, then Sent Control byte
  2974.         (TxCB) transmit status
  2975.             bit 7: transmission pending
  2976.             bit 6: transmission failed
  2977.             bits 3-0: error number
  2978.  02h    BYTE    Port number
  2979.  03h    WORD    station number
  2980.  05h    WORD    length
  2981.  07h    WORD    0000h
  2982. SeeAlso: #03036,#03041,#03044
  2983.  
  2984. Format of Econet Reply Block (command 06h):
  2985. Offset    Size    Description    (Table 03044)
  2986.  00h  N BYTEs    data read from network
  2987. SeeAlso: #03036,#03043,#03045
  2988.  
  2989. Format of Econet Reply Block (command 07h):
  2990. Offset    Size    Description    (Table 03045)
  2991.  00h  N BYTEs    returned information
  2992. SeeAlso: #03036,#03044
  2993. --------N-2FC503-----------------------------
  2994. INT 2F - PC-DOS Econet v1.05 - ADD EVENT HANDLER
  2995.     AX = C503h
  2996.     DS:DX -> event handler (see #03046)
  2997. Return: AX = return code (see #03037)
  2998. Note:    the interrupt-enable state will be preserved, but interrupts may be
  2999.       enabled during processing of this function
  3000. SeeAlso: AX=C500h,AX=C504h,AX=C505h,AX=C508h
  3001.  
  3002. Format of Econet event handler:
  3003. Offset    Size    Description    (Table 03046)
  3004.  00h    DWORD    -> next handler's code (at offset 8, filled in by Econet)
  3005.  04h    DWORD    -> previous event handler (filled in by Econet)
  3006.  08h    var    entry point (executable code called on event) (see #03047)
  3007.  
  3008. (Table 03047)
  3009. Values Econet event handler is called with:
  3010.     AL = event number
  3011.     AH = timeout flag (01h if timeout, else 00h)
  3012. Return:    all registers preserved
  3013.     if event trapped by this handler, issue RETF
  3014.     if event not trapped, jump to address stored at offset 0
  3015. SeeAlso: #03046
  3016. --------N-2FC504-----------------------------
  3017. INT 2F - PC-DOS Econet v1.05 - REMOVE EVENT HANDLER
  3018.     AX = C504h
  3019.     DS:DX -> event handler
  3020. Return: AX = return code (see #03037)
  3021. Note:    the interrupt-enable state will be preserved, but interrupts may be
  3022.       enabled during processing of this function
  3023. SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
  3024. --------N-2FC505-----------------------------
  3025. INT 2F - PC-DOS Econet v1.05 - SET DEFAULT EVENT ACTION
  3026.     AX = C505h
  3027.     DL = new default action
  3028.         00h disable event handling (ignore incoming events)
  3029.         01h enable (call event handler chain)
  3030.         02h store until enabled or disabled (default)
  3031. Return: AX = return code (see #03037)
  3032. Note:    the interrupt-enable state will be preserved, but interrupts may be
  3033.       enabled during processing of this function
  3034. SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
  3035. --------N-2FC506-----------------------------
  3036. INT 2F - PC-DOS Econet v1.05 - SET INDIVIDUAL EVENT ACTION
  3037.     AX = C506h
  3038.     DH = event number
  3039.     DL = new default action
  3040.         00h disable event handling (ignore incoming events)
  3041.         01h enable (call event handler chain)
  3042.         02h store until enabled or disabled (default)
  3043. Return: AX = return code (see #03037)
  3044. Note:    the interrupt-enable state will be preserved, but interrupts may be
  3045.       enabled during processing of this function
  3046. SeeAlso: AX=C500h,AX=C504h,AX=C505h,AX=C507h
  3047. --------N-2FC507-----------------------------
  3048. INT 2F - PC-DOS Econet v1.05 - TEST/CLEAR EVENT STATUS
  3049.     AX = C507h
  3050.     DH = event number (FFh = first event in queue)
  3051.     DL = disposition (00h test only, 01h test and clear)
  3052. Return: AX = return code (see #03037)
  3053.     DH = event number if one is pending, 00h if none
  3054. Note:    the interrupt-enable state will be preserved, but interrupts may be
  3055.       enabled during processing of this function
  3056. SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
  3057. --------N-2FC508-----------------------------
  3058. INT 2F - PC-DOS Econet v1.05 - ENABLE/DISABLE EVENT SCHEDULER
  3059.     AX = C508h
  3060.     DL = new state of scheduler (01h enabled, 02h disabled)
  3061. Return: AX = return code (see #03037)
  3062.     DL = previous state
  3063. Notes:    the interrupt-enable state will be preserved, but interrupts may be
  3064.       enabled during processing of this function
  3065.     while the scheduler is disabled, all events are queued until the
  3066.       scheduler is re-enabled
  3067. SeeAlso: AX=C500h,AX=C503h,AX=C504h,AX=C506h,AX=C507h
  3068. --------d-2FC64CBX5553-----------------------
  3069. INT 2F U - Smart Prompt - INSTALLATION CHECK
  3070.     AX = C64Ch
  3071.     BX = 5553h
  3072. Return: AX = 4CC6h if installed
  3073.     BX = 5355h if installed
  3074. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which
  3075.       forces an immediate flush of SmartDrive's (and compatible caches')
  3076.       buffers on returning to the DOS prompt
  3077. --------V-2FC700CX434C-----------------------
  3078. INT 2F u - COLAP - INSTALLATION CHECK
  3079.     AX = C700h
  3080.     CX = 434Ch  "CL"
  3081. Return: AL = FFh if installed
  3082. Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
  3083.       and brightness of color laptops by changing the VGA palette colors;
  3084.       for Toshiba laptops there are more hotkeys for shutting off display
  3085.       and harddisk.
  3086. --------v-2FC900BP0000-----------------------
  3087. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  3088.     AX = C900h
  3089.     BP = 0000h
  3090. Return: AL = FFh if installed
  3091.         BP >= 0014h
  3092. Note:    called by TBSCANX
  3093. SeeAlso: AX=C987h,AX=CA00h
  3094. --------v-2FC987-----------------------------
  3095. INT 2F U - ThunderByte??? - DISINFECT FILE???
  3096.     AX = C987h
  3097.     BX:DX -> filename
  3098.     BX:CX -> virus name
  3099. Return: AX = status
  3100.         0000h successful???
  3101. Note:    called by TBSCANX
  3102. SeeAlso: AX=CA00h
  3103. --------v-2FC9FD-----------------------------
  3104. INT 2F - ThunderByte TBLOG - WRITE STRING TO LOG
  3105.     AX = C9FDh
  3106.     DS:SI -> ASCIZ string (max 110 chars)
  3107. Return: AH = 00h
  3108.     AL = last character in string
  3109.     CX = number of unused characters in string
  3110.     SI,DI destroyed
  3111. Notes:    The string can also be terminated with a '%'-character.
  3112.     This function is never called within ThunderBYTE Anti-Virus.
  3113. SeeAlso: AX=C900h
  3114. --------r-2FC9FF-----------------------------
  3115. INT 2F C - StackMan - INSTALLATION BROADCAST
  3116.     AX = C9FFh
  3117.     BL = BCD version number
  3118.     CX = number of stacks
  3119.     DX = stack size in bytes
  3120. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  3121.       which functions as a replacement for the DOS STACK= command as well
  3122.       as permitting multiple TSRs to share a pool of stack space
  3123. InstallCheck:    test for the string "STACKXXX" at offset 0Ah from the INT B4
  3124.       handler
  3125. Note:    called by StackMan when it goes resident to inform interested TSRs that
  3126.       its API is available
  3127. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  3128. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  3129. --------F-2FCA-------------------------------
  3130. INT 2F - FAXPLUS - FAX TSR
  3131.     AH = CAh
  3132.     ???
  3133. Return: ???
  3134. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  3135.       Veldman
  3136. SeeAlso: AH=2Ah"Gammafax"
  3137. --------v-2FCA00BX5442-----------------------
  3138. INT 2F - TBSCANX - INSTALLATION CHECK
  3139.     AX = CA00h
  3140.     BX = 5442h ('TB')
  3141. Return: AL = state
  3142.         00h not installed
  3143.         FFh installed
  3144.         BX = 7462h ('tb') if BX was 5442h on entry
  3145. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  3146. Notes:    programs may perform virus checks on themselves, other program files,
  3147.       or their data files by invoking the TBSCANX API.
  3148.     current versions of TBScanX don't actually check the value of BX
  3149. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0007h,AX=C900h
  3150. --------v-2FCA01-----------------------------
  3151. INT 2F - TBSCANX - GET STATUS
  3152.     AX = CA01h
  3153. Return: AH = BCD version number (v2.2+)
  3154.         CAh for versions before 2.2
  3155.     AL = state (00h = disabled, 01h = enabled)
  3156.     CX = number of signatures which will be searched
  3157. ---v2.0---
  3158.     BX = EMS handle, 0000h if not using EMS
  3159. ---v2.3+---
  3160.     BX = segment of swap area, 0000h if not swapped
  3161.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  3162. SeeAlso: AX=CA02h
  3163. --------v-2FCA02-----------------------------
  3164. INT 2F - TBSCANX - SET STATE
  3165.     AX = CA02h
  3166.     BL = new state (00h = disabled, 01h = enabled)
  3167. SeeAlso: AX=CA01h
  3168. --------v-2FCA03-----------------------------
  3169. INT 2F - TBSCANX - SCAN BUFFER
  3170.     AX = CA03h
  3171.     CX = size of buffer
  3172.     DS:DX -> buffer containing data to scan
  3173. Return: CF clear if no virus signatures found
  3174.         BX,ES destroyed
  3175.     CF set if signature found
  3176.         ES:BX -> ASCIZ virus name (v2.3+)
  3177.         DS:DX -> ASCIZ virus name (v2.0)
  3178.     AX,CX,DX destroyed (v2.3+)
  3179.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  3180. SeeAlso: AX=CA04h
  3181. --------v-2FCA04-----------------------------
  3182. INT 2F - TBSCANX - SCAN FILE
  3183.     AX = CA04h
  3184.     DS:DX -> filename
  3185. Return: CF clear if no virus signatures found
  3186.         BX,SI,DI,ES destroyed
  3187.     CF set if signature found
  3188.         ES:BX -> ASCIZ virus name
  3189.     AX,CX,DX destroyed
  3190. Note:    this function requires at least 4K free memory
  3191. SeeAlso: AX=CA03h
  3192. --------U-2FCAFEBX0000-----------------------
  3193. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  3194.     AX = CAFEh
  3195.     BX = 0000h
  3196. Return: BX = segment of resident code if installed
  3197.         0000h if not installed
  3198. SeeAlso: AX=5453h,INT 2D"AMIS"
  3199. --------F-2FCB00-----------------------------
  3200. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  3201.     AX = CB00h
  3202. Return: AL = status
  3203.         00h not installed, OK to install
  3204.         01h not installed, not OK to install
  3205.         FFh installed
  3206. Note:    AH = CBh is the default identifier, but may be reconfigured
  3207. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  3208. --------F-2FCB00BX4D53-----------------------
  3209. INT 2F - METZ XpressFax CASMGR - INSTALLATION CHECK
  3210.     AX = CB00h
  3211.     BX = 4D53h ('MS')
  3212.     CX = 4949h ('II')
  3213. Return: AL = status
  3214.         00h not installed, OK to install
  3215.         01h not installed, not OK to install
  3216.         FFh installed
  3217.         BX = 6D73h ('ms')
  3218.         CX = 6969h ('ii')
  3219. Note:    this function is equivalent to the standard CASMGR installation check,
  3220.       but uses the additional magic values to identify which CAS is
  3221.       installed
  3222. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  3223. --------F-2FCB01-----------------------------
  3224. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  3225.     AX = CB01h
  3226.     DS:DX -> ASCIZ name of task control file
  3227. Return: AX >= 0: event handle
  3228.     AX < 0: two's complement of error code (see #03048)
  3229. Note:    files needed for an event must be kept until task is complete or error
  3230. SeeAlso: AX=CB0Bh,AX=CB15h
  3231.  
  3232. (Table 03048)
  3233. Values for CAS error code:
  3234.   (AH = class, AL = subcode, value passed back is 2's complement)
  3235.   Class 00h    --- FAX warnings
  3236.     Subcode 00h    no error
  3237.         02h    bad scanline count
  3238.         03h    page sent with errors, could not retransmit
  3239.         04h    received data lost
  3240.         05h    invalid or missing logo file
  3241.         06h    filename does not match nonstandard format (NSF) header
  3242.         07h    file size does not match NSF header
  3243.   Class 01h    --- DOS warnings (data was sent)
  3244.     Subcode 01h    invalid function
  3245.         05h    access denied
  3246.         06h    invalid handle
  3247.         others    see #01680 at INT 21/AH=59h/BX=0000h
  3248.   Class 02h    --- fatal errors (data not sent)
  3249.     Subcode 00h    multiplex handler failed
  3250.         01h    unknown command
  3251.         02h    bad event handle
  3252.         03h    FIND NEXT attempted before FIND FIRST
  3253.         04h    no more events
  3254.         07h    invalid queue type
  3255.         08h    bad control file
  3256.         09h    communication board busy
  3257.         0Ah    invalid command parameter
  3258.         0Bh    can't uninstall resident code
  3259.         0Ch    file exists
  3260.         80h    unknown task type
  3261.         81h    bad phone number
  3262.         82h    bad .PCX file header
  3263.         83h    unexpected EOF
  3264.         84h    unexpected disconnect
  3265.         85h    too many dialing retries
  3266.         86h    no file specified for send
  3267.         87h    communication board timeout
  3268.         88h    received too many pages (>1023) of data
  3269.         89h    manual connect initiated too long ago
  3270.         8Ah    hardware command set error
  3271.         8Bh    bad NonStandard Format (NSF) header file
  3272.   Class 03h    --- fatal DOS errors
  3273.     Subcode 02h    file not found
  3274.         03h    path not found
  3275.         others    see #01680 at INT 21/AH=59h/BX=0000h
  3276.   Class 04h    --- FAX errors
  3277.     Subcode 01h    remote unit not Group 3 compatible
  3278.         02h    remote unit did not send capabilities
  3279.         03h    other FAX machine incompatible
  3280.         04h    other FAX incapable of file transfers
  3281.         05h    exceeded retrain or FAX resend limit
  3282.         06h    line noise or failure to agree on bit rate
  3283.         07h    remote disconnected after receiving data
  3284.         08h    no response from remote after sending data
  3285.         09h    remote's capabilities incompatible
  3286.         0Ah    no dial tone (v1.2+)
  3287.         0Bh    invalid response from remote unit after sending data
  3288.         0Dh    phone line dead or remote unit disconnected
  3289.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  3290.         11h    invalid command from remote after receiving data
  3291.         15h    tried to receive from incompatible hardware
  3292.         5Ch    received data overflowed input buffer
  3293.         5Dh    remote unexpectedly stopped sending data
  3294.         5Eh    other FAX machine jammed (no data sent)
  3295.         5Fh    remote took too long to send fax scan line
  3296.         63h    can't get through to remote unit
  3297.         64h    user canceled event
  3298.   Class 05h    --- application-specific (v1.2+)
  3299.   ---Intel FAXPOP.EXE
  3300.     Subcode 00h    tried to send while in graphics mode
  3301.         01h    insufficient disk space
  3302.         02h    internal buffer overflow
  3303.   Class 06h    --- CAS implementation-specific (v1.2+)
  3304. --------F-2FCB02-----------------------------
  3305. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  3306.     AX = CB02h
  3307. Return: AX >= 0: event handle of aborted event
  3308.     AX < 0: error code (see #03048)
  3309. Note:    termination could take up to 30 seconds
  3310. SeeAlso: AX=CB08h,AX=CB10h
  3311. --------F-2FCB05-----------------------------
  3312. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  3313.     AX = CB05h
  3314.     CX = status of events to find
  3315.         0000h successful completion
  3316.         0001h waiting to be processed
  3317.         0002h number has been dialed
  3318.         0003h connection established, sending
  3319.         0004h connection established, receiving
  3320.         0005h event aborted
  3321.         FFFFh find any event, regardless of status
  3322.         other negative values, match error code
  3323.     DH = direction
  3324.         00h chronological order, earliest to latest
  3325.         01h reverse chronological order, latest to earliest
  3326.     DL = queue to search
  3327.         00h task queue
  3328.         01h receive queue
  3329.         02h log queue
  3330. Return: AX = 0000h successful
  3331.         BX = event handle for found event
  3332.     AX < 0       error code (see #03048)
  3333. SeeAlso: AX=CB06h,AX=CB07h
  3334. --------F-2FCB06-----------------------------
  3335. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  3336.     AX = CB06h
  3337.     DL = queue to search
  3338.         00h task queue
  3339.         01h receive queue
  3340.         02h log queue
  3341. Return: AX = 0000h successful
  3342.         BX = event handle for found event
  3343.     AX < 0       error code (see #03048)
  3344. Note:    direction of search is same as preceding FIND FIRST call
  3345. SeeAlso: AX=CB05h
  3346. --------F-2FCB07-----------------------------
  3347. INT 2F - Communicating Applications Specification - OPEN FILE
  3348.     AX = CB07h
  3349.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  3350.     CX = receive file number (ignored for task queue and log queue)
  3351.         0000h  open receive control file
  3352.         N       open Nth received data file
  3353.     DL = queue
  3354.         00h task queue
  3355.         01h receive queue control file or received file, as given by CX
  3356.         02h log queue
  3357.         03h group file in task queue (v1.2+)
  3358.         04h group file in log queue (v1.2+)
  3359. Return: AX = 0000h successful
  3360.         BX = DOS file handle for requested file
  3361.     AX < 0       error code (see #03048)
  3362. Note:    the returned file handle has been opened in read-only mode and should
  3363.       be closed with INT 21/AH=3Eh after use
  3364. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  3365. --------F-2FCB08-----------------------------
  3366. INT 2F - Communicating Applications Specification - DELETE FILE
  3367.     AX = CB08h
  3368.     BX = event handle
  3369.     CX = receive file number
  3370.         0000h delete ALL received files and receive control file
  3371.         N      delete Nth received file
  3372.     DL = queue
  3373.         00h delete control file in task queue and corresponding group file
  3374.           if it exists
  3375.         01h delete file in receive queue, as given by CX
  3376.         02h delete control file in log queue (individual deletions not
  3377.           recommended, to maintain integrity of log) and corresponding
  3378.           group file if it exists
  3379. Return: AX = 0000h successful
  3380.     AX < 0       error code (see #03048)
  3381. SeeAlso: AX=CB02h,AX=CB09h
  3382. --------F-2FCB09-----------------------------
  3383. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3384.     AX = CB09h
  3385.     DL = queue
  3386.         00h delete all control files in task queue, including all group
  3387.           files
  3388.         01h delete all files in receive queue
  3389.         02h delete all control files in log queue, including all group
  3390.           files
  3391. Return: AX = 0000h successful
  3392.     AX < 0       error code (see #03048)
  3393. SeeAlso: AX=CB08h
  3394. --------F-2FCB0A-----------------------------
  3395. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3396.     AX = CB0Ah
  3397.     BX = event handle
  3398.     DL = queue
  3399.         00h task queue
  3400.         01h receive queue
  3401.         02h log queue
  3402. Return: AX = 0000h successful
  3403.         CX = year
  3404.         DH = month
  3405.         DL = day
  3406.     AX < 0       error code (see #03048)
  3407. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3408. --------F-2FCB0B-----------------------------
  3409. INT 2F - Communicating Applications Specification - SET TASK DATE
  3410.     AX = CB0Bh
  3411.     BX = event handle (task event only)
  3412.     CX = year
  3413.     DH = month
  3414.     DL = day
  3415. Return: AX = 0000h successful
  3416.     AX < 0       error code (see #03048)
  3417. Note:    setting a task's date and time to before the current date and time
  3418.       causes it to execute immediately
  3419. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3420. --------F-2FCB0C-----------------------------
  3421. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3422.     AX = CB0Ch
  3423.     BX = event handle
  3424.     DL = queue
  3425.         00h task queue
  3426.         01h receive queue
  3427.         02h log queue
  3428. Return: AX = 0000h successful
  3429.         CH = hour
  3430.         CL = minute
  3431.         DH = second
  3432.         DL = 00h
  3433.     AX < 0       error code (see #03048)
  3434. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3435. --------F-2FCB0D-----------------------------
  3436. INT 2F - Communicating Applications Specification - SET TASK TIME
  3437.     AX = CB0Dh
  3438.     BX = event handle (task events only)
  3439.     CH = hour
  3440.     CL = minute
  3441.     DH = second
  3442.     DL unused
  3443. Return: AX = 0000h successful
  3444.     AX < 0       error code (see #03048)
  3445. Note:    setting a task's date and time to before the current date and time
  3446.       causes it to execute immediately
  3447. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3448. --------F-2FCB0E-----------------------------
  3449. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3450.     AX = CB0Eh
  3451.     DS:DX -> 256-byte buffer for external data block (see #03049)
  3452. Return: AX = 0000h successful
  3453.         DS:DX buffer filled
  3454.     AX < 0       error code (see #03048)
  3455.  
  3456. Format of CAS external data block:
  3457. Offset    Size    Description    (Table 03049)
  3458.  00h    BYTE    CAS major version
  3459.  01h    BYTE    CAS minor version
  3460.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3461.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3462.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3463.  60h 32 BYTEs    ASCIZ default sender name
  3464.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3465.  95h 107 BYTEs    reserved
  3466. --------F-2FCB0F-----------------------------
  3467. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3468.     AX = CB0Fh
  3469.     DL = subfunction
  3470.         00h get current autoreceive state
  3471.         01h set autoreceive state
  3472.         DH = number of rings before answer, 00h = never
  3473. Return: AX = 0000h autoreceive disabled
  3474.     AX = N       number of rings before answer
  3475.     AX < 0       error code (see #03048)
  3476. --------F-2FCB10-----------------------------
  3477. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3478.     AX = CB10h
  3479.     DS:DX -> 512-byte buffer for status area (see #03051)
  3480. Return: AX = 0000h successful
  3481.         BX = event handle of current event or negative error code if
  3482.               no current event
  3483.         buffer filled
  3484.     AX < 0       error code (see #03048)
  3485. SeeAlso: AX=CB02h,AX=CB0Dh
  3486.  
  3487. (Table 03050)
  3488. Values for CAS event type:
  3489.  00h    send
  3490.  01h    receive
  3491.  02h    polled send
  3492.  03h    polled receive
  3493.  04h to 7Fh reserved
  3494.  FFh    serious hardware error
  3495.  
  3496. Format of CAS status area:
  3497. Offset    Size    Description    (Table 03051)
  3498.  00h    BYTE    event type (see #03050)
  3499.  01h    BYTE    transfer type
  3500.         00h 200x200 dpi, FAX mode
  3501.         01h 100x200 dpi, FAX mode
  3502.         02h file transfer mode
  3503.         03h to 7Fh reserved
  3504.  02h    WORD    event status (see #03052)
  3505.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3506.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3507.  08h    WORD    number of files to transfer, max 7FFFh
  3508.  0Ah    WORD    offset of file transfer record
  3509.  0Ch 47 BYTEs    ASCIZ phone number to call
  3510.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3511.  7Bh    BYTE    reserved (00h)
  3512.  7Ch    BYTE    connect time, seconds
  3513.  7Dh    BYTE    connect time, minutes
  3514.  7Eh    BYTE    connect time, hours
  3515.  7Fh    DWORD    total number of pages in all files
  3516.  83h    DWORD    pages already transmitted
  3517.  87h    WORD    number of files already transmitted
  3518.  89h    BYTE    cover page flag
  3519.         00h don't transmit cover page
  3520.         01h transmit cover page
  3521.         02h to 7Fh reserved
  3522.  8Ah    WORD    total number of transmission errors
  3523.  8Ch 78 BYTEs    reserved (zeros)
  3524.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3525.  EFH 32 BYTEs    ASCIZ destination name
  3526. 10Fh 32 BYTEs    ASCIZ sender name
  3527. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3528. 17Fh 128 BYTEs    file transfer record for current event (see #03053)
  3529.  
  3530. (Table 03052)
  3531. Values for CAS event status:
  3532.  0000h    completed successfully
  3533.  0001h    waiting
  3534.  0002h    number dialed
  3535.  0003h    connected, sending
  3536.  0004h    connected, receiving
  3537.  0005h    aborted
  3538.  0006h to 007Fh reserved
  3539.  0080h to 7FFFh application-specific events
  3540.  8000h to FFFFh error codes
  3541.  
  3542. Format of CAS file transfer record:
  3543. Offset    Size    Description    (Table 03053)
  3544.  00h    BYTE    file type (ignored unless FAX)
  3545.         00h ASCII
  3546.         01h PCX
  3547.         02h DCX
  3548.         03h to 7Fh reserved
  3549.  01h    BYTE    text size for ASCII FAX file
  3550.         00h = 80 columns by 66 lines (11 inches)
  3551.         01h = 132 columns by 88 lines (11 inches)
  3552.         02h to 7Fh reserved
  3553.  02h    BYTE    status of file
  3554.         00h untouched
  3555.         01h opened
  3556.         02h moved
  3557.         03h deleted
  3558.         04h not yet received
  3559.         05h to 7Fh reserved
  3560.  03h    DWORD    bytes already transmitted
  3561.  07h    DWORD    file size in bytes
  3562.  0Bh    WORD    pages alread transmitted
  3563.  0Dh    WORD    number of pages in file
  3564.  0Fh 80 BYTEs    ASCIZ filename
  3565.  5Fh    BYTE    1/8 inch page length
  3566.         if page length below set to 01h through 7Fh, this value
  3567.           specifies additional 1/8 inch increments to page length
  3568.  60h    BYTE    page length
  3569.         00h = 11 inches
  3570.         01h to 7Fh = page length is this number of inches plus value of
  3571.               1/8 inch field above
  3572.         80h to FEh reserved
  3573.         FFh = ASCII pages ending with formfeed
  3574.  61h 31 BYTEs    reserved (zeros)
  3575. --------F-2FCB11-----------------------------
  3576. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3577.     AX = CB11h
  3578.     DL = queue to get status of
  3579.         00h task queue
  3580.         01h receive queue
  3581.         02h log queue
  3582.         03h send events (v1.2+)
  3583.         04h receive events (v1.2+)
  3584. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3585.         BX = number of control files currently in queue
  3586.         CX = number of received files (zero for task and log queues)
  3587.     AX < 0    error code (see #03048)
  3588. SeeAlso: AX=CB12h
  3589. --------F-2FCB11DL03-------------------------
  3590. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3591.     AX = CB11h
  3592.     DL = 03h
  3593. Return: AX = number of successful sends since resident manager started
  3594.     BX = number of unsuccessful sends, including warnings
  3595. SeeAlso: AX=CB11h/DL=04h
  3596. --------F-2FCB11DL04-------------------------
  3597. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3598.     AX = CB11h
  3599.     DL = 04h
  3600. Return: AX = number of received file events since resident manager started
  3601.     BX = number of received FAX events
  3602. SeeAlso: AX=CB11h/DL=03h
  3603. --------F-2FCB12-----------------------------
  3604. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3605.     AX = CB12h
  3606.     DS:DX -> 128-byte status buffer (see #03054,#03056)
  3607. Return: AX = 0000h successful
  3608.         DS:DX buffer filled with hardware-dependent status information
  3609.        < 0       error code (see #03048)
  3610. SeeAlso: AX=CB10h,AX=CB11h
  3611.  
  3612. Format of status buffer for Intel Connection CoProcessor:
  3613. Offset    Size    Description    (Table 03054)
  3614.  00h    BYTE    Connection CoProcessor connection status flags (see #03057)
  3615.  01h    BYTE    number of kilobytes of free buffer space
  3616.  02h    BYTE    page buffer status
  3617.         bit 7: Connection CoProcessor has documents to send
  3618.         bits 6-0: number of pages in buffer
  3619.  03h    BYTE    number of retries left for dialing number
  3620.  04h    BYTE    page number to retransmit
  3621.  05h    BYTE    communications status (see #03058)
  3622.  06h    BYTE    baud rate (see #03055)
  3623.  07h  3 BYTEs    reserved
  3624.  0Ah    BYTE    Connection CoProcessor hardware status (see #03059)
  3625.  0Bh    BYTE    Connection CoProcessor switch states (see #03060)
  3626.  0Ch    BYTE    communications flags (see #03061)
  3627.  0Dh    BYTE    reserved
  3628.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3629.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3630.  14h    BYTE    'A' if Connection CoProcessor board present
  3631.  15h  9 BYTEs    reserved
  3632.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3633.  33h 77 BYTEs    reserved
  3634. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3635.       by examining the byte at offset 14h
  3636.  
  3637. Bitfields for Connection CoProcessor baud rate:
  3638. Bit(s)    Description    (Table 03055)
  3639.  7    reserved
  3640.  6-4    baud rate
  3641.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  3642.     100 = 2400 baud (V.27 ter)
  3643.     101 = 4800 baud (V.27 ter)
  3644.     110 = 7200 baud (V.29)
  3645.     111 = 9600 baud (V.29)
  3646.  3-0    reserved, should be 0110
  3647.  
  3648. Format of status buffer for Intel SatisFAXtion board:
  3649. Offset    Size    Description    (Table 03056)
  3650.  00h    BYTE    SatisFAXtion connection status flags (see #03062)
  3651.  01h    BYTE    SatisFAXtion board state (see #03063)
  3652.  02h    BYTE    number of KB free in buffer
  3653.  03h    BYTE    number of pages or files in buffer
  3654.  04h    BYTE    number of redials remaining on current number
  3655.  05h    BYTE    FAX page number to retransmit
  3656.  06h    BYTE    current page/file in block transfer
  3657.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3658.  08h    WORD    error count
  3659.  0Ah    DWORD    length of file being transferred
  3660.  0Eh  6 BYTEs    reserved
  3661.  14h    BYTE    'B' if SatisFAXtion board present
  3662.  15h 13 BYTEs    ASCIZ transfer agent name
  3663.  22h  5 BYTEs    ASCIZ transfer agent version number
  3664.  27h 13 BYTEs    ASCIZ resident loader name
  3665.  34h  5 BYTEs    ASCIZ resident loader version number
  3666.  39h 21 BYTEs    ASCIZ remote CSID
  3667.  4Eh 13 BYTEs    ASCIZ resident manager name
  3668.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3669.  60h 32 BYTEs    reserved
  3670. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3671.       by examining the byte at offset 14h
  3672.  
  3673. Bitfields for Connection CoProcessor connection status flags:
  3674. Bit(s)    Description    (Table 03057)
  3675.  7    hardware busy sending or receiving
  3676.  6    last page of data
  3677.  5    no data on current page
  3678.  4    retransmit request for current page being transmitted
  3679.  3    NSF (nonstandard file) mode active
  3680.  2-0    reserved
  3681.  
  3682. Bitfields for communications status:
  3683. Bit(s)    Description    (Table 03058)
  3684.  7    originating call
  3685.  6    FAX message to be sent
  3686.  5    on line
  3687.  4    ring detected and receive enabled
  3688.  3    buffer dumped on receive
  3689.  2-0    hardware sequence state
  3690.     000 idle
  3691.     001 dial
  3692.     010 answer
  3693.     011 transmit
  3694.     100 receive
  3695.     101 pre-message
  3696.     110 post-message
  3697.     111 disconnect
  3698.  
  3699. Bitfields for Connection CoProcessor hardware status:
  3700. Bit(s)    Description    (Table 03059)
  3701.  7    modem option installed
  3702.  6    Connection CoProcessor has control of DAA (not latched)
  3703.  5    on line (not latched)
  3704.  4    ring detected (not latched)
  3705.  3    data in command buffer (not latched)
  3706.  2    set if using DMA channel 1, clear if using DMA channel 3
  3707.  1    line length compensation 1 set (not latched)
  3708.  0    line length compensation 0 set (not latched)
  3709.  
  3710. Bitfields for Connection CoProcessor switch states:
  3711. Bit(s)    Description    (Table 03060)
  3712.  7    reserved
  3713.  6    unused
  3714.  5    spare switch open
  3715.  4    FAX ADR1 switch open
  3716.  3    FAX ADR0 switch open
  3717.  2    alternate interrupt switch open
  3718.  1    COM SEL 1 switch open
  3719.  0    COM SEL 0 switch open
  3720. Note:    valid combinations of 0-2 are
  3721.     000  COM2 IRQ3 IObase 2F8h
  3722.     001  COM1 IRQ4 IObase 3F8h
  3723.     010  COM4 IRQ3 IObase 2E8h
  3724.     011  COM3 IRQ4 IObase 3E8h
  3725.     110  COM4 IRQ2 IObase 2E8h
  3726.     111  COM3 IRQ5 IObase 3E8h
  3727.  
  3728. Bitfields for communications flags:
  3729. Bit(s)    Description    (Table 03061)
  3730.  7    reserved
  3731.  6    auxiliary relay forced ON
  3732.  5    modem select relay forced ON
  3733.  4    offhook relay forced ON
  3734.  3    9600 bps enabled
  3735.  2    7200 bps enabled
  3736.  1    4800 bps enabled
  3737.  0    2400 bps enabled
  3738.  
  3739. Bitfields for SatisFAXtion connection status flags:
  3740. Bit(s)    Description    (Table 03062)
  3741.  7    busy in T.30 CCITT fax protocol
  3742.  6    data on current page/file (only used for block xfers)
  3743.  5    retransmission of last page requested
  3744.  4    in file transfer mode
  3745.  3    data in buffer
  3746.  2    data buffer dumped on receive
  3747.  1    200x100 dpi resolution instead of 200x200 dpi
  3748.  0    data modem in use, FAX image modem not available
  3749.  
  3750. Bitfields for SatisFAXtion board state:
  3751. Bit(s)    Description    (Table 03063)
  3752.  7    reserved
  3753.  6    handset jack active, data and FAX modems not available
  3754.  5-3    current rate
  3755.     000  300 bps (V.21 HDLC)
  3756.     100 2400 bps (V.27 ter)
  3757.     101 4800 bps (V.27 ter)
  3758.     110 7200 bps (V.29)
  3759.     111 9600 bps (V.29)
  3760.  2-0    T.30 CCITT protocol state
  3761.     000 idle
  3762.     001 dialing
  3763.     010 answering
  3764.     011 transmitting
  3765.     100 receiving
  3766.     101 pre-message
  3767.     110 post-message
  3768.     111 disconnect
  3769. --------F-2FCB13DL00-------------------------
  3770. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3771.     AX = CB13h
  3772.     DL = 00h
  3773. Return: AX = 0040h in progress
  3774.        >= 0       passed
  3775.        < 0       hardware-dependent failure code (see #03064,#03065)
  3776. SeeAlso: AX=CB13h/DL=01h
  3777.  
  3778. Bitfields for Intel Connection CoProcessor failure codes:
  3779. Bit(s)    Description    (Table 03064)
  3780.  3    9600 bps FAX modem module failed
  3781.  2    SDLC chip failed
  3782.  1    RAM failed
  3783.  0    ROM checksum failed
  3784.  
  3785. Bitfields for Intel SatisFAXtion failure codes:
  3786. Bit(s)    Description    (Table 03065)
  3787.  1    2400 bps data modem failed
  3788.  0    9600 bps FAX modem failed
  3789. --------F-2FCB13DL01-------------------------
  3790. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3791.     AX = CB13h
  3792.     DL = 01h
  3793. Return: AX = 0000h successfully started
  3794.     AX < 0       error code (see #03048)
  3795. SeeAlso: AX=CB13h/DL=00h
  3796. --------F-2FCB14-----------------------------
  3797. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3798.     AX = CB14h
  3799.     BX = event handle
  3800.     CX = receive file number
  3801.         0001h first received file
  3802.         N      Nth received file
  3803.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3804. Return: AX = 0000h successful
  3805.     AX < 0       error code (see #03048)
  3806. --------F-2FCB15-----------------------------
  3807. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3808.     AX = CB15h
  3809.     DS:DX -> variable-length data area (see #03066)
  3810. Return: AX >= 0 event handle
  3811.     AX < 0    error code (see #03048)
  3812. SeeAlso: AX=CB01h
  3813.  
  3814. Format of CAS file submission data area:
  3815. Offset    Size    Description    (Table 03066)
  3816.  00h    BYTE    transfer type
  3817.         00h = 200x200 dpi, fax mode
  3818.         01h = 100x200 dpi, fax mode
  3819.         02h = file transfer mode
  3820.         03h to 7Fh reserved
  3821.  01h    BYTE    text size
  3822.         00h = 80 columns
  3823.         01h = 132 columns
  3824.         02h to 7Fh reserved
  3825.  02h    WORD    time to send (DOS packed time, see #01665 at INT 21/AX=5700h)
  3826.  04h    WORD    date to send (DOS packed date, see #01666 at INT 21/AX=5700h)
  3827.  06h 32 BYTEs    ASCIZ destination name
  3828.  26h 80 BYTEs    ASCIZ name of file to send
  3829.  76h 47 BYTEs    ASCIZ phone number to dial
  3830.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3831.  E5h    BYTE    reserved (00h)
  3832.  E6h    BYTE    cover page
  3833.         00h don't send cover page
  3834.         01h send cover page
  3835.         02h to 7Fh reserved
  3836.  E7h 23 BYTEs    reserved (zeros)
  3837.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3838.         set to 01h)
  3839. --------F-2FCB16BX1234-----------------------
  3840. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3841.     AX = CB16h
  3842.     BX = 1234h
  3843.     CX = 5678h
  3844.     DX = 9ABCh
  3845. Return: AX = 0000h successful
  3846.     AX < 0       error code
  3847. Note:    the METZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3848. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  3849. Index:    uninstall;CAS Manager
  3850. --------F-2FCB17-----------------------------
  3851. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3852.     AX = CB17h
  3853.     BX = event handle
  3854.     CL = cover page status
  3855.         00h not read
  3856.         01h read by user
  3857. Return: AX = 0000h successful
  3858.     AX < 0       error code
  3859. --------F-2FCB80-----------------------------
  3860. INT 2F - Intel SatisFAXtion CASMGR - ???
  3861.     AX = CB80h
  3862.     ???
  3863. Return: ???
  3864. --------F-2FCB81-----------------------------
  3865. INT 2F - Intel SatisFAXtion CASMGR - ???
  3866.     AX = CB81h
  3867.     ???
  3868. Return: ???
  3869. --------F-2FCB82-----------------------------
  3870. INT 2F - Intel SatisFAXtion CASMGR - ???
  3871.     AX = CB82h
  3872.     ???
  3873. Return: ???
  3874. --------F-2FCBDCBL56-------------------------
  3875. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3876.     AX = CBDCh
  3877.     BL = 56h
  3878.     BH = line number (starts with 1)
  3879.     CX:DX -> 32-byte status buffer or 80 character string
  3880. Return: AX = number of cards installed, or FFFFh on error
  3881. Program: Comwave manufacturers the Microfax line of fax cards which are a
  3882.       high-performance multi-card FAX solution for OEMs.
  3883. Note:    defaults to AH=CBh but can be changed
  3884. SeeAlso: AX=CBDDh,AX=DA00h
  3885. --------F-2FCBDDBL56-------------------------
  3886. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3887.     AX = CBDDh
  3888.     BL = 56h
  3889.     BH = ?
  3890.     CX:DX -> command to execute
  3891. Return: AX = status
  3892.         0000h success
  3893.         FFFFh on error
  3894. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3895. --------c-2FCC--SI5453-----------------------
  3896. INT 2F U - PC-Kwik Programs - API
  3897.     AH = CCh
  3898.     SI = 5453h or 7473h
  3899.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  3900.     DL = program identifier (see #03067)
  3901. Return: SI = 7473h
  3902.     other registers vary by function
  3903. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3904.       thus supports this call
  3905. SeeAlso: INT 21/AH=2Bh/CX=4358h
  3906.  
  3907. (Table 03067)
  3908. Values for PC-Kwik program identifier:
  3909.  00h    all installed PowerPak programs
  3910.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  3911.  02h    PCKSPL (print spooler)
  3912.  04h    PCKSCRN (screen accelerator)
  3913.  05h    PCKKEY (keyboard enhancer)
  3914.  06h    PCKRAMD (RAM disk)
  3915.  08h    PCKWIK.SYS
  3916.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  3917. --------N-2FCC00-----------------------------
  3918. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  3919.     AX = CC00h
  3920. Return: AX = 7777h
  3921.     BX = ???
  3922.     CX = ???
  3923.     DX = ???
  3924.     ES = data segment of resident portion
  3925. SeeAlso: AX=CC01h,AX=CC06h
  3926. --------N-2FCC01-----------------------------
  3927. INT 2F - Tsoft NFSDRVR - ???
  3928.     AX = CC01h
  3929.     ???
  3930. Return: ???
  3931. SeeAlso: AX=CC00h
  3932. --------N-2FCC02-----------------------------
  3933. INT 2F - Tsoft NFSDRVR - ???
  3934.     AX = CC02h
  3935.     ???
  3936. Return: ???
  3937. SeeAlso: AX=CC00h
  3938. --------N-2FCC03-----------------------------
  3939. INT 2F - Tsoft NFSDRVR - ???
  3940.     AX = CC03h
  3941.     ???
  3942. Return: ???
  3943. SeeAlso: AX=CC00h
  3944. --------N-2FCC04-----------------------------
  3945. INT 2F - Tsoft NFSDRVR - ???
  3946.     AX = CC04h
  3947.     ???
  3948. Return: ???
  3949. SeeAlso: AX=CC00h
  3950. --------N-2FCC05-----------------------------
  3951. INT 2F - Tsoft NFSDRVR - ???
  3952.     AX = CC05h
  3953.     ???
  3954. Return: ???
  3955. SeeAlso: AX=CC00h
  3956. --------N-2FCC06-----------------------------
  3957. INT 2F - Tsoft NFSDRVR - ???
  3958.     AX = CC06h
  3959.     ???
  3960. Return: ???
  3961. SeeAlso: AX=CC00h
  3962. --------P-2FCD00-----------------------------
  3963. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  3964.     AX = CD00h
  3965. Return: AL = state
  3966.         00h not installed, OK to install
  3967.         01h not installed, not OK to install
  3968.         FFh installed
  3969. SeeAlso: AX=CD02h"Image"
  3970. --------P-2FCD00-----------------------------
  3971. INT 2F - LaserPort Interface - INSTALLATION CHECK
  3972.     AX = CD00h
  3973. Return: AL = status
  3974.         FFh installed
  3975. SeeAlso: AX=CD0Fh"LaserPort"
  3976. --------U-2FCD00-----------------------------
  3977. INT 2F - SWELL.EXE - INSTALLATION CHECK
  3978.     AX = CD00h
  3979. Return: AX = 00FFh installed
  3980.         BH = major version
  3981.         BL = minor version
  3982. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a
  3983.       child process with INT 21/AH=4Bh
  3984. --------s-2FCD00BX464F-----------------------
  3985. INT 2F - Forte/Gravis ULTRAMID - INSTALLATION CHECK
  3986.     AX = CD00h
  3987.     BX = 464Fh ('FO')
  3988.     CX = 5254h ('RT')
  3989.     DX = 4520h ('E ')
  3990. Return: AL = FFh if installed
  3991.         BX = 4155h ('AU')
  3992.         CX = 4449h ('DI')
  3993.         DX = 4F20h ('O ')
  3994.         ES:SI -> program ID string
  3995. Program: ULTRAMID is a MIDI driver for the Gravis UltraSound which allows use
  3996.       of AIL drivers with other software
  3997. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  3998. SeeAlso: INT 21/AX=FD12h,AX=CD00h/DX=4957h
  3999. --------s-2FCD00DX4957-----------------------
  4000. INT 2F R - InterWave Game API - INSTALLATION CHECK
  4001.     AX = CD00h
  4002.     DX = 4957h ('IW')
  4003.     SI = 5645h ('VE')
  4004. Return: AL = FFh if installed
  4005.         DX = 4554h ('ET')
  4006.         SI = 454Bh ('EK')
  4007. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4008. SeeAlso: AX=CD00h/BX=464Fh,AX=CD01h"InterWave",AX=CD21h"InterWave"
  4009. SeeAlso: AX=CD80h"InterWave"
  4010. --------P-2FCD01-----------------------------
  4011. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  4012.     AX = CD01h
  4013.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  4014. Return: AL = status
  4015.         00h successful
  4016.         CX:BX -> internal character device name
  4017.         80h error
  4018. --------U-2FCD01-----------------------------
  4019. INT 2F - SWELL.EXE - SUSPEND ONCE
  4020.     AX = CD01h
  4021. Return: AX = 0000h
  4022. SeeAlso: AX=CD02h"SWELL"
  4023. --------s-2FCD01BX0000-----------------------
  4024. INT 2F R - InterWave Game API - GET NUMBER OF INTERWAVE PROGRAMS / PROGRAM ID
  4025.     AX = CD01h
  4026.     BX = 0000h
  4027. Return: BX = number of programs currently installed on the Game API
  4028. Desc:    get the number of programs supporting the InterWave Game API which are
  4029.       currently installed in memory, which also forms the next program ID
  4030.       number if the caller wishes to go resident on the API
  4031. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4032. Notes:    the first program to install on the IW Game API must use ID 00h
  4033.     the AMD-recommended implementation is for the handler to increment
  4034.       BX and chain to the previous handler (if any), but this will fail
  4035.       if TSRs are unloaded out-of-order
  4036. SeeAlso: AX=CD00h"InterWave",AX=CD02h"InterWave",AX=CD03h"InterWave"
  4037. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4038. --------P-2FCD02-----------------------------
  4039. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  4040.     AX = CD02h
  4041. Return: AL = status
  4042.         00h/01h successful
  4043.         BH = major version number (BCD)
  4044.         BL = minor version number (BCD)
  4045.         80h error
  4046. Note:    if return AL = 01h, the IPI supports network redirection
  4047. SeeAlso: AX=CD00h"Image"
  4048. --------U-2FCD02-----------------------------
  4049. INT 2F - SWELL.EXE - SUSPEND
  4050.     AX = CD02h
  4051. Return: AX = 0000h
  4052. SeeAlso: AX=CD03h"SWELL"
  4053. --------s-2FCD02-----------------------------
  4054. INT 2F R - InterWave Game API - GET PROGRAM STATUS AND INFORMATION
  4055.     AX = CD02h
  4056.     BX = program identifier
  4057. Return: CX = program status
  4058.         bit 0: using synthesizer
  4059.         bit 1: using Codec
  4060.         bit 2: supports at least one Game Device (see AX=CD21h,AX=CD22h)
  4061.     BX = supported API version (BCD, BH=major, BL=minor) if CX bit 2 set
  4062.     ES:DI -> ASCIZ identification string
  4063. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4064. Note:    ordinarily, an application will loop through all valid program
  4065.       identifiers (as returned by AX=CD01h); if any of the installed
  4066.       programs conflicts with the use the caller wishes to make of the
  4067.       InterWave chip, it should be disabled with AX=CD03h first
  4068. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
  4069. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4070. --------P-2FCD03-----------------------------
  4071. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  4072.     AX = CD03h
  4073.     BX = scan line
  4074.     CX = requested density in dots per inch (300, 600, or 1200)
  4075. Return: AL = status (see also AX=CD04h"Image")
  4076.         00h successful
  4077.         CX = density at which scan line was mapped
  4078.         ES:DI -> start of scan line
  4079.         80h unsuccessful
  4080.         81h scan line out of range
  4081.         82h unsupported scan line density
  4082.         83h out of memory
  4083. SeeAlso: AX=CD04h"Image"
  4084. --------U-2FCD03-----------------------------
  4085. INT 2F - SWELL.EXE - ACTIVATE
  4086.     AX = CD03h
  4087. Return: AX = 0000h
  4088. SeeAlso: AX=CD02h"SWELL"
  4089. --------s-2FCD03-----------------------------
  4090. INT 2F R - InterWave Game API - SUSPEND PROGRAM
  4091.     AX = CD03h
  4092.     BX = installed program identifier
  4093.     CX = InterWave section to be released
  4094.         0000h all
  4095.         0001h synthesizer
  4096.         0002h Codec
  4097. Return: AL = status
  4098.         00h successful
  4099.         BX = base port
  4100.         CL = IRQ
  4101.         CH = DMA channel (Codec only)
  4102.         else failed
  4103. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  4104. SeeAlso: AX=CD04h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4105. --------P-2FCD04-----------------------------
  4106. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  4107.     AX = CD04h
  4108.     CX:BX -> structure (see #03069)
  4109. Return: AL = status (see #03068)
  4110. SeeAlso: AX=CD03h"Image"
  4111.  
  4112. (Table 03068)
  4113. Values for IPI function status:
  4114.  00h    successful
  4115.  80h    unsuccessful
  4116.  81h    scan line out of range
  4117.  82h    unsupported scan line density
  4118.  83h    out of memory
  4119.  84h    unrecognized source
  4120.  85h    initialization error
  4121.  
  4122. Format of structure:
  4123. Offset    Size    Description    (Table 03069)
  4124.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4125.  02h    DWORD    pointer to image data
  4126.  06h    WORD    scan line on which to place
  4127.  08h    WORD    bit offset from start of scan line at which to place
  4128.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  4129.  0Ch    WORD    width in bits of data
  4130.  0Eh    WORD    source logical page number
  4131.  10h    WORD    source handle (only if source in expanded memory)
  4132.  12h    WORD    source offset (only if source in expanded memory)
  4133. --------U-2FCD04-----------------------------
  4134. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  4135.     AX = CD04h
  4136. Return: AX = 0000h
  4137. SeeAlso: AX=CD05h"SWELL"
  4138. --------s-2FCD04-----------------------------
  4139. INT 2F R - InterWave Game API - WAKE PROGRAM
  4140.     AX = CD04h
  4141.     BX = installed program identifier
  4142. Return: AL = status
  4143.         00h successful
  4144.         else failed
  4145. Note:    this function should only be called after the program has been
  4146.       suspended with AX=CD03h
  4147. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
  4148. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4149. SeeAlso: INT 7E/AL=84h"IWSBSDRV"
  4150. --------P-2FCD05-----------------------------
  4151. INT 2F - Intel Image Processing Interface - PRINT PAGE
  4152.     AX = CD05h
  4153. Return: AL = status (00h,80h) (see #03068)
  4154. Note:    page image is retained, so multiple calls will print multiple copies of
  4155.       the page
  4156. SeeAlso: AX=CD06h"Image"
  4157. --------U-2FCD05-----------------------------
  4158. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  4159.     AX = CD05h
  4160. Return: AX = 0000h
  4161. SeeAlso: AX=CD04h"SWELL"
  4162. --------s-2FCD05-----------------------------
  4163. INT 2F R - InterWave Game API - UNINSTALL RESIDENT DEVICE DRIVER
  4164.     AX = CD05h
  4165.     BX = installed program identifier
  4166. Return: AL = status
  4167.         00h successful
  4168.         else failed
  4169. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  4170. SeeAlso: AX=CD03h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4171. --------P-2FCD06-----------------------------
  4172. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  4173.     AX = CD06h
  4174. Return: AL = status (00h,80h) (see #03068)
  4175. Note:    palette is reset to default
  4176. SeeAlso: AX=CD09h"Image"
  4177. --------U-2FCD06-----------------------------
  4178. INT 2F - SWELL.EXE - UNINSTALL
  4179.     AX = CD06h
  4180. Return: AX = status
  4181.         0000h uninstalled
  4182.         8002h programs still swapped, not uninstalled
  4183. --------P-2FCD07-----------------------------
  4184. INT 2F - Intel Image Processing Interface - reserved
  4185.     AX = CD07h
  4186. SeeAlso: AX=CD00h"Image"
  4187. --------U-2FCD07-----------------------------
  4188. INT 2F - SWELL.EXE - GET INFO
  4189.     AX = CD07h
  4190.     ES:BX -> 32-byte buffer for info (see #03070)
  4191. Return: AX = status
  4192.         0000h successful
  4193.         ES:BX buffer filled
  4194.         8001h buffer wrong size
  4195.  
  4196. Format of SWELL.EXE info buffer:
  4197. Offset    Size    Description    (Table 03070)
  4198.  00h    WORD    20h  (total size of buffer)
  4199.  02h    BYTE    suspend-once mode active if nonzero
  4200.  03h    BYTE    00h active, 01h suspended
  4201.  04h    BYTE    00h quiet, 01h verbose
  4202.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  4203.  06h 26 BYTEs    unused???
  4204. --------P-2FCD08-----------------------------
  4205. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  4206.     AX = CD08h
  4207.     CX:BX -> structure (see #03071)
  4208. Return: AL = status (00h,80h-85h) (see #03068)
  4209. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  4210.  
  4211. Format of IPI screen image structure:
  4212. Offset    Size    Description    (Table 03071)
  4213.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4214.  02h    DWORD    pointer to image data
  4215.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  4216.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  4217.  0Ah    WORD    left cropping (currently must be zero)
  4218.  0Ch    WORD    top cropping (currently must be zero)
  4219.  0Eh    WORD    width (currently must be 8000h)
  4220.  10h    WORD    height (currently must be 8000h)
  4221.  12h    WORD    horizontal size of image in 1200 dpi units
  4222.  14h    WORD    vertical size of image in 1200 dpi units
  4223.  16h    WORD    aspect ratio (currently reserved)
  4224.  18h    WORD    initialization flag (if 01h, initialization is performed)
  4225.  1Ah    WORD    pixels per line of source data
  4226.  1Ch    WORD    number of scan lines in source data
  4227.  1Eh    WORD    number of scan lines in packet
  4228.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  4229.  22h    WORD    pixels per byte (1,2,4, or 8)
  4230.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  4231.  26h    WORD    source page number (if in expanded memory)
  4232.  28h    WORD    source handle (if in expanded memory)
  4233.  2Ah    WORD    source offset (if in expanded memory)
  4234. --------U-2FCD08-----------------------------
  4235. INT 2F - SWELL.EXE - UNUSED
  4236.     AX = CD08h
  4237. Return: AX = FFFFh (error)
  4238. --------P-2FCD09-----------------------------
  4239. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  4240.     AX = CD09h
  4241.     CX:BX -> structure (see #03072)
  4242. Return: AL = status (00h,80h) (see #03068)
  4243. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  4244.  
  4245. Format of IPI load screen structure:
  4246. Offset    Size    Description    (Table 03072)
  4247.  00h    BYTE    style
  4248.         44h ('D') diamond style
  4249.         4Ch ('L') line style
  4250.  01h    BYTE    reserved (00h)
  4251.  02h    WORD    frequency in lines per inch [sic]
  4252.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  4253.  04h    WORD    screen angle in degrees (-360 to 360)
  4254.         currently coerced to nearest of -45, 0, 45, or 90
  4255. --------U-2FCD09-----------------------------
  4256. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  4257.     AX = CD09h
  4258. Return: AX = 0000h
  4259. SeeAlso: AX=CD0Ah"SWELL"
  4260. --------P-2FCD0A-----------------------------
  4261. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  4262.     AX = CD0Ah
  4263.     CX:BX -> palette structure (see #03073)
  4264. Return: AL = status (00h,80h) (see #03068)
  4265. SeeAlso: AX=CD09h"Image Processing"
  4266.  
  4267. Format of IPI palette structure:
  4268. Offset    Size    Description    (Table 03073)
  4269.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  4270.  01h    2**N    palette translation values, one per possible pixel value
  4271. --------U-2FCD0A-----------------------------
  4272. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  4273.     AX = CD0Ah
  4274. Return: AX = 0000h
  4275. SeeAlso: AX=CD09h"SWELL"
  4276. --------P-2FCD0F-----------------------------
  4277. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  4278.     AX = CD0Fh
  4279.     BL = function
  4280.         01h enable
  4281.         02h disable
  4282.         03h ???
  4283. Return: AL = status
  4284.         00h success
  4285. SeeAlso: AX=CD00h"LaserPort"
  4286. --------s-2FCD21-----------------------------
  4287. INT 2F R - InterWave Game API - OPEN GAME DEVICE
  4288.     AX = CD21h
  4289.     BX = installed program identifier
  4290.     ES:DI -> ASCIZ device name
  4291.         "MIDISIMPLE"
  4292.         "MIDICOMPLEX"
  4293.         "DIRECTCODEC"
  4294. Return: AL = status
  4295.         00h successful
  4296.         DX = device handle
  4297.         ---MIDISIMPLE and MIDICOMPLEX---
  4298.         BX = real-mode interrupt number (see #03074,#03075)
  4299.         ---DIRECTCODEC---
  4300.         BX = base port
  4301.         CL = IRQ
  4302.         CH = DMA channel (04h = no DMA)
  4303.         SI = size of FIFO in bytes (0000h = use DMA)
  4304.         nonzero failed (not supported or already in use)
  4305.     AH may be destroyed
  4306. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4307. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  4308. SeeAlso: AX=CD05h"InterWave",AX=CD22h"InterWave",AX=CD80h"InterWave"
  4309.  
  4310. (Table 03074)
  4311. Call MIDISIMPLE with:
  4312.     EAX = function number
  4313.         0001h MIDI byte out
  4314.         BL = MIDI byte to send
  4315.         0002h MIDI string out
  4316.         ECX = length of MIDI string in bytes
  4317.         ES:EDI -> MIDI string to send (should not include timing info)
  4318.     DX = device handle
  4319.     INT xxh (as returned by AX=CD21h)
  4320. Return: EAX = status
  4321.         00000000h if successful
  4322.         FFFFFFFFh on error (bad handle)
  4323. SeeAlso: #03075,INT 7E/AX=0001h"IWSBSDRV",INT 7E/AX=0002h"IWSBSDRV"
  4324.  
  4325. (Table 03075)
  4326. Call MIDICOMPLEX with:
  4327.     EAX = function number
  4328.         ??? (specification is still in development)
  4329.     DX = device handle
  4330.     INT xxh (as returned by AX=CD21h)
  4331. Return: EAX = status
  4332.         00000000h if successful
  4333.         FFFFFFFFh on error (bad handle)
  4334. SeeAlso: #03074
  4335. --------s-2FCD22-----------------------------
  4336. INT 2F R - InterWave Game API - CLOSE GAME DEVICE
  4337.     AX = CD22h
  4338.     BX = installed program identifier
  4339.     DX = device handle (from AX=CD21h)
  4340. Return: AL = status
  4341.         00h successful
  4342.         FFh inavlid handle or device is not open
  4343. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4344. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  4345. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  4346. --------s-2FCD80-----------------------------
  4347. INT 2F RC - InterWave Game API - MIXER SETTINGS CHANGED BROADCAST
  4348.     AX = CD80h
  4349. Return: nothing
  4350. Desc:    called by an application controlling the InterWave chip's mixer
  4351.       whenever the mixer's settings are changed
  4352. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  4353. Note:    when an application intercepts this function call, it must read the
  4354.       new mixer settings from the InterWave chip
  4355. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  4356. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD22h"InterWave"
  4357. --------K-2FCF00-----------------------------
  4358. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  4359.     AX = CF00h
  4360. Return: AL = FFh if installed
  4361. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  4362. Note:    values in AL other than 00h cause an immediate return without modifying
  4363.       any registers
  4364. --------G-2FD000-----------------------------
  4365. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  4366.     AX = D000h
  4367. Return: CF set on error
  4368.         all other registers must be unchanged)
  4369.     CF clear if successful
  4370.         AL = FFh
  4371.         AH = driver semaphor
  4372.         00h driver is not active
  4373.         01h driver is active
  4374.         BX = CS of the driver
  4375.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  4376.         DL = buffer semaphor
  4377.         00h driver is not pending
  4378.         01h driver is pending between functions 02h and 03h
  4379.         DH = show semaphor
  4380.         00h driver is not pending
  4381.         01h driver is pending between functions 04h and 05h
  4382. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4383.       Schemmer, including a memory monitor, an interpreter and a
  4384.       disassembler
  4385. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4386. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  4387.       FFh; the default is D0h for the display driver and D1h for the
  4388.       command driver (call INT 60/AH=00h"MDEBUG" for the actual multiplex
  4389.       numbers used)
  4390.     this function MUST be reentrant, as MDEBUG calls it after every popup
  4391.       before any other actions.  The handler should not change any
  4392.       registers if the display is in an unsupported mode or in a mode
  4393.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  4394.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  4395.       not call any of the other functions for this popup session.
  4396.     MDEBUG will not call the other functions if the returned version is
  4397.       less than the actual version of MDEBUG.
  4398.     if the driver is reentrant, DL and DH should be 00h
  4399. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  4400. --------M-2FD000-----------------------------
  4401. INT 2F - ZWmous - INSTALLATION CHECK
  4402.     AX = D000h
  4403. Return: AX = 5A57h ("ZW") if installed
  4404.         BX = segment of resident code
  4405. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  4406.       with many non-mouse applications by entering the letter under the
  4407.       mouse cursor on button presses
  4408. SeeAlso: INT 33/AX=0003h
  4409. --------N-2FD000-----------------------------
  4410. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  4411.     AX = D000h
  4412. Return: AL = FFh if CD/Networker TSR is loaded
  4413.     BX = 4D44h ("MD") signature
  4414.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  4415.     DX = bitmap identifying all loaded CD/Networker TSRs.
  4416. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  4417.       resident redirector TSR and a transient program that controls the
  4418.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  4419.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  4420. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  4421. --------G-2FD001-----------------------------
  4422. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  4423.     AX = D001h
  4424. Return: CF set on error
  4425.     AL = driver semaphor
  4426.     AH = buffer semaphor
  4427. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4428. Notes:    MDEBUG calls this function after every successful call of the function
  4429.       00h. The function should reset all internal data and the status of
  4430.       the driver. If this function returns an error, MDEBUG will not call
  4431.       the other functions in this popup session.
  4432.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4433.       FFh; the default is D0h for the display driver and D1h for the
  4434.       command driver
  4435. SeeAlso: AX=D000h
  4436. --------G-2FD002-----------------------------
  4437. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  4438.     AX = D002h
  4439. Return: CF set on error
  4440.     CF clear if successful
  4441.         display memory saved and display switched to one of the text modes
  4442.           02h, 03h or 07h.
  4443. Note:    MDEBUG calls this function only once every popup session before
  4444.       displaying its windows.
  4445. SeeAlso: AX=D000h,AX=D003h
  4446. --------N-2FD002BX4D44-----------------------
  4447. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  4448.     AX = D002h
  4449.     BX = 4D44h
  4450.     DX = bitmap identifying one loaded CD/Networker TSR
  4451. Return: ES:DI -> data area owned by TSR
  4452. Note:    the format of the data area changes with each minor revision, so it
  4453.       cannot be counted on
  4454. SeeAlso: AX=D000h"Lotus"
  4455. --------G-2FD003-----------------------------
  4456. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  4457.     AX = D003h
  4458. Return: CF set on error
  4459.     CF clear if successful
  4460.         display restored to the mode it was in before calling AX=D002h and
  4461.           the display memory is restored
  4462. Note:    MDEBUG calls this function only once every popup session just before
  4463.      it exits to normal DOS.
  4464. SeeAlso: AX=D000h,AX=D002h
  4465. --------G-2FD004-----------------------------
  4466. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  4467.     AX = D004h
  4468. Return: CF set on error
  4469.     CF clear if successful
  4470.         display switched to mode it was in before calling AX=D002h and the
  4471.           display memory is restored
  4472. Note:    This function needn't save the display memory before changing it.
  4473. SeeAlso: AX=D000h,AX=D005h
  4474. --------G-2FD005-----------------------------
  4475. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  4476.     AX = D005h
  4477. Return: CF set on error
  4478.     CF clear if successful
  4479.         display restored to mode it was in before calling AX=D004h
  4480. Note:    This function needn't save or change the display memory
  4481. SeeAlso: AX=D000h,AX=D004h
  4482. --------G-2FD0-------------------------------
  4483. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  4484.     AH = D0h
  4485.     AL = 06h-7Fh
  4486. Note:    these functions are reserved for future use
  4487. --------G-2FD0-------------------------------
  4488. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  4489.     AH = D0h
  4490.     AL = 80h-FFh
  4491. Note:    these functions numbers are reserved for user defined features (e.g.
  4492.       communication between the transient und resident parts of the driver)
  4493. --------G-2FD100-----------------------------
  4494. INT 2F C - MDEBUG command driver - GET STATUS
  4495.     AX = D100h
  4496.     BX = version of MDEBUG (BH = major, BL = minor)
  4497.     CX = command driver counter
  4498. ---v1.60+---
  4499.     DS:SI -> MDEBUG identification table (see #03076)
  4500.     ES = segment of display memory used by MDEBUG
  4501.     DI = size of video mode used by MDEBUG
  4502.         (high byte = lines, low byte = columns)
  4503. Return: DL = FFh
  4504.     BX = version number of the driver if it is less than the version in BX,
  4505.           else unchanged
  4506.     CX incremented
  4507. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4508.       Schemmer, including a memory monitor, an interpreter, and a
  4509.       disassembler
  4510. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  4511. Notes:    called by MDEBUG at start of popup session; if the version number
  4512.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  4513.       not call any of the other functions during this popup session
  4514.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4515.       FFh; the default is D0h for the display driver and D1h for the
  4516.       command driver (call INT 60/AH=00h"MDEBUG" for the multiplex numbers
  4517.       actually used)
  4518.     this function must end with a far call to the old INT 2F handler after
  4519.       changing the registers
  4520.     this function MUST be reentrant
  4521.     command drivers must also declare the following data at the given
  4522.       offsets in the code segment
  4523.         100h  3 BYTEs    JMP-command in .COM-files
  4524.         103h    BYTE    NOP-command (90h)
  4525.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  4526.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  4527.                 each driver must have a unique name
  4528.     MDEBUG will pass every key and command to the command driver(s) before
  4529.       checking for a valid internal command
  4530. SeeAlso: AX=D000h,AX=D101h
  4531.  
  4532. Format of MDEBUG identification table:
  4533. Offset    Size    Description    (Table 03076)
  4534.  -2    WORD    entry offset
  4535.  00h    WORD    CS of MDEBUG
  4536.  02h    DWORD    old INT 08h vector
  4537.  06h    DWORD    old INT 09h vector
  4538.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  4539.  0Eh    BYTE    length of version string
  4540.  0Fh  N BYTEs    version string
  4541. --------G-2FD101-----------------------------
  4542. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  4543.     AX = D101h
  4544.     CX = command driver counter
  4545. Return: DL = status
  4546.         FFh if successful
  4547.         CX incremented
  4548.         else error: all registers unchanged
  4549. Note:    this function must end with a  far call to the old INT 2F handler after
  4550.       changing the registers
  4551.     this function must be reentrant
  4552. --------G-2FD102-----------------------------
  4553. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  4554.     AX = D102h
  4555.     BL = first character of the interpreter command
  4556.     BH = last character of the interpreter command (or blank)
  4557.     DS:SI -> parameter for the interpreter command as ASCIZ string
  4558.     DS:DI -> MDEBUG data structure (see #03078)
  4559. Return: AL = FFh
  4560.     CF set on error
  4561.         AH = error number (see #03077)
  4562.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  4563.     CF clear if successful
  4564.         AH = return code
  4565.         00h continue processing the command line
  4566.         01h leave MDEBUG popup session
  4567.         02h leave MDEBUG popup session and automatically popup again
  4568.               if the InDOS flag is zero
  4569.         03h not used (same as 00h)
  4570.         04h not used (same as 00h)
  4571.         05h put new command line into the input buffer,
  4572.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4573.         06h process new command line
  4574.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4575.            else unknown status, but continue processing commmand line
  4576. Note:    this function must end with a far call to the old INT 2F handler (with
  4577.       registers unchanged) if the driver does not support the interpreter
  4578.       command in BX.  Otherwise, the driver must not chain to the old
  4579.       INT 2F.
  4580.  
  4581. (Table 03077)
  4582. Values for MDEBUG error number:
  4583.  01h    syntax error
  4584.  02h    first shell of the command.com is activ
  4585.  03h    Esc pressed
  4586.  04h    break pressed
  4587.  05h    DOS is busy
  4588.  06h    command ended
  4589.  07h    division by zero
  4590.  08h    invalid display driver
  4591.  09h    invalid command driver
  4592.  0Ah    error 8 and 9
  4593.  0Bh    unknown error
  4594.  0Ch    new error
  4595.  else    unknown error
  4596.  
  4597. Format of MDEBUG data structure:
  4598. Offset    Size    Description    (Table 03078)
  4599.  00h    WORD    register SE
  4600.  02h    WORD    register OF
  4601.  04h    WORD    register FS
  4602.  06h    WORD    register FO
  4603.  08h    WORD    register AX
  4604.  0Ah    WORD    register BX
  4605.  0Ch    WORD    register CX
  4606.  0Eh    WORD    register DX
  4607.  10h    WORD    register SI
  4608.  12h    WORD    register DI
  4609.  14h    WORD    register DS
  4610.  16h    WORD    register ES
  4611.  18h    WORD    register BP
  4612.  1Ah    WORD    register SS
  4613.  1Ch    WORD    register SP
  4614.  1Eh    WORD    register FL (flags)
  4615.  20h    WORD    register R0
  4616.  22h    WORD    register R1
  4617.  24h    WORD    register R2
  4618.  26h    WORD    register R3
  4619.  28h    WORD    register R4
  4620.  2Ah    WORD    register R5
  4621.  2Ch    WORD    register R6
  4622.  2Eh    WORD    register R7
  4623.  30h    WORD    register R8
  4624.  32h    WORD    register CS, return-address
  4625.  34h    WORD    register IP, return-address
  4626.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4627.         saved monitor address (v1.70)
  4628.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4629.         (original register values at popup entry of MDEBUG)
  4630.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4631.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4632.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4633.  6Ah    DWORD    address of the DOS-invars-table
  4634.  6Eh    DWORD    address of the InDOS flag
  4635.  72h    WORD    offset of the register which is used for the segment of the
  4636.           first monitor window
  4637.  74h    WORD    offset of the register which is used for the offset of the
  4638.           first monitor window
  4639.  76h    WORD    name of the register which is used for the segment of the
  4640.           first monitor segment
  4641.  78h    WORD    name of the register which is used for the offset of the first
  4642.           monitor window
  4643.  7Ah    WORD    pseudo register 1
  4644.  7Ch    WORD    pseudo register 2
  4645. --------G-2FD103-----------------------------
  4646. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4647.     AX = D103h
  4648.     BX = key code (like result of an interrupt 16h call)
  4649.     CX = cursor position
  4650.         0000h in the ASCII column of the monitor
  4651.         0001h in one of the hex fields of the monitor
  4652.     DS:SI -> MDEBUG data structure (see #03078)
  4653.     ES:DI -> actual byte in the monitor
  4654. Return: AL = FFh
  4655.     AH = return code
  4656.         00h key processed, read next key
  4657.         01h leave MDEBUG popup session
  4658.         02h leave MDEBUG popup session and automatically popup again if DOS
  4659.           is not busy
  4660.         03h signal an error (beep)
  4661.         04h driver has redefined the key, proceed with the new key
  4662.         BX = new key code
  4663.         MDEBUG will not pass the new key to the command driver(s)
  4664.        else treat like code 00h
  4665. Note:    this function must end with a far call to the old INT 2F handler (with
  4666.       registers unchanged) if the driver does not support the key in BX.
  4667.       Otherwise, the driver must not chain to the old INT 2F.
  4668. SeeAlso: AX=D104h
  4669. --------G-2FD104-----------------------------
  4670. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4671.     AX = D104h
  4672.     DS:SI -> MDEBUG data structure (see #03078)
  4673. Return: AL = FFh
  4674.     AH = return code
  4675.         00h key processed, read next key
  4676.         01h leave MDEBUG popup session
  4677.         02h leave MDEBUG popup session and automactically popup again if
  4678.           DOS is not busy
  4679.         03h signal an error (beep)
  4680.         04h driver has redefined the key, proceed with the new key
  4681.         BX = new key code
  4682.         MDEBUG won't pass the new key to the command driver(s)
  4683.         05h put new command line into the input buffer
  4684.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4685.         06h process new command line
  4686.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4687.        else treat like code 00h
  4688. Note:    this function must end with a far call to the old INT 2F handler if the
  4689.       driver does not support the key in BX.  Otherwise, the driver must
  4690.       not chain to the old INT 2F.
  4691. SeeAlso: AX=D103h
  4692. --------G-2FD1-------------------------------
  4693. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4694.     AH = D1h
  4695.     AL = 05h-0Ah
  4696. Note:    these functions are reserved for future use
  4697. --------G-2FD110-----------------------------
  4698. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4699.     AX = D110h
  4700. Return: DL = FFh
  4701.     ES:BX -> next program in the chain for INT 2F
  4702.     CX = code segment of this driver
  4703.     DI = offset of driver identification table (see #03079) (v1.60+)
  4704. Notes:    only called by the transient part of the driver
  4705.     must be reentrant and the driver must not chain this function to the
  4706.       old INT 2F
  4707.  
  4708. Format of the MDEBUG driver identification table:
  4709. Offset    Size    Description    (Table 03079)
  4710.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4711.                          ^- Note: ASCII 129,German U-umlaut
  4712.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4713.          each driver must have a unique name
  4714. --------G-2FD111-----------------------------
  4715. INT 2F - MDEBUG command driver - START DRIVER
  4716.     AX = D111h
  4717. Return: DL = FFh
  4718. Notes:    only called by the transient part of the driver to inform the resident
  4719.       part that it is installed
  4720.     the function must be reentrant and the driver mustn't chain this
  4721.       function to the old INT 2F
  4722. SeeAlso: AX=D101h,AX=D112h
  4723. --------G-2FD112-----------------------------
  4724. INT 2F - MDEBUG command driver - END DRIVER
  4725.     AX = D112h
  4726. Return: DL = FFh
  4727. Notes:    only called by the transient part of the driver to inform the resident
  4728.       part that it will be released after this function
  4729.     the function must be reentrant and the driver mustn't chain this
  4730.       function to the old INT 2F
  4731. SeeAlso: AX=D101h,AX=D111h
  4732. --------G-2FD1-------------------------------
  4733. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4734.     AH = D1h
  4735.     AL = 13h-7Fh
  4736. Note:    these functions are reserved for future use
  4737. --------G-2FD1-------------------------------
  4738. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4739.     AH = D1h
  4740.     AL = 80h-FFh
  4741. Note:    these functions are reserved for user defined features (e.g.
  4742.       communication between the transient und resident parts of the driver)
  4743. --------U-2FD200-----------------------------
  4744. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4745.     AX = D200h
  4746. Return: AL = FFh if installed??? (documented as AX = return value)
  4747. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4748.       board by Advantec
  4749. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4750. --------Q-2FD200BX5144-----------------------
  4751. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4752.     AX = D200h
  4753.     BX = 5144h ("QD")
  4754.     CX = 4D45h ("ME")
  4755.     DX = 4D30h ("M0")
  4756. Return: AL = FFh installed
  4757.     if BX,CX,DX registers were as specified on entry:
  4758.         BX = 4D45h ("ME")
  4759.         CX = 4D44h ("MD")
  4760.         DX = 5652h ("VR")
  4761. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4762. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  4763.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4764.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4765.       Quarterdeck product, it just chains to the previous INT 2F handler
  4766. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4767. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4768. --------U-2FD201-----------------------------
  4769. INT 2F - PCL-838.EXE - UNINSTALL
  4770.     AX = D201h
  4771. Return: AX = return value
  4772. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4773. --------m-2FD201BX4849-----------------------
  4774. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4775.     AX = D201h
  4776.     BX = 4849h ("HI")
  4777.     CX = 4D45h ("ME")
  4778.     DX = 4D51h ("MQ")
  4779. Return: BX = 4F4Bh ("OK")
  4780.     ES:DI -> HIMEM entry point
  4781. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4782. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4783. --------m-2FD201BX4849-----------------------
  4784. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4785.     AX = D201h
  4786.     BX = 4849h ("HI")
  4787.     CX = 5241h ("RA")
  4788.     DX = 4D30h ("M0")
  4789. Return: BX = 4F4Bh ("OK")
  4790.     CX = segment of start of HIRAM chain
  4791.     DX = reserved block owner (QEMM/QRAM code segment)
  4792. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4793. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  4794.       memory chain (see #01628 at INT 21/AH=52h), except that XMS Upper
  4795.       Memory Blocks have the block header program name field set to
  4796.       "UMB"; blocks whose "owner" field is set to the reserved segment
  4797.       returned in DX are locked-out regions such as video memory and ROMs.
  4798. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4799. --------G-2FD201BX4D41-----------------------
  4800. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4801.     AX = D201h
  4802.     BX = 4D41h ("MA")
  4803.     CX = 4E49h ("NI")
  4804.     DX = 4645h ("FE")
  4805. Return: BX = 5354h ("ST") if installed
  4806. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4807. SeeAlso: AX=D200h
  4808. --------E-2FD201BX4D45-----------------------
  4809. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4810.     AX = D201h
  4811.     BX = 4D45h ("ME")
  4812.     CX = 5155h ("QU")
  4813.     DX = 5044h ("PD")
  4814. Return: AL = FFh
  4815.     BX = 4F4Bh ("OK")
  4816. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4817. Note:    this function is called by QEMM 6.03
  4818.     performs a variety of actions before setting return registers
  4819. SeeAlso: AX=D200h
  4820. --------m-2FD201BX5145-----------------------
  4821. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4822.     AX = D201h
  4823.     BX = 5145h ("QE")
  4824.     CX = 4D4Dh ("MM")
  4825.     DX = 3432h ("42")
  4826. Return: BX = 4F4Bh ("OK")
  4827.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4828. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4829. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  4830.       has been disabled with the NW3 switch to QEMM386.SYS
  4831. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4832. --------V-2FD201BX5649-----------------------
  4833. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4834.     AX = D201h
  4835.     BX = 5649h ("VI")
  4836.     CX = 4452h ("DR")
  4837.     DX = 414Dh ("AM")
  4838. Return: BX = 4F4Bh ("OK")
  4839.     ES:DI -> VIDRAM entry point (see #03080)
  4840. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  4841. SeeAlso: AX=D200h
  4842.  
  4843. (Table 03080)
  4844. Call VIDRAM entry point with:
  4845.     AH = 00h get status
  4846.         Return: AL = VIDRAM state (see #03081)
  4847.             BL = extra RAM status (see #03082)
  4848.             BH = feature flags (see #03083)
  4849.             CL = current monitor (01h = mono, 80h = color)
  4850.             SI = current top of memory (paragraph)
  4851.             DI = segment of start of HiRAM chain
  4852.     AH = 01h setup
  4853.         AL = VIDRAM state (see #03081)
  4854.         BL = extra RAM status (see #03082)
  4855.         BH = feature flags (see #03083)
  4856.         CL = monitor (01h = monochrome, 80h = color)
  4857.         SI = new top of memory (paragraph)
  4858.         DI = segment of start of HiRAM chain
  4859.     AH = 02h get end address of VIDRAM code
  4860.         Return: ES:DI -> VIDRAM partial map context (see #03084,#03085)
  4861. Return: CF set on error
  4862.     CF clear if successful
  4863.  
  4864. (Table 03081)
  4865. Values for VIDRAM state:
  4866.  00h    off
  4867.  01h    no EGA graphics
  4868.  02h    no graphics at all
  4869.  
  4870. (Table 03082)
  4871. Values for VIDRAM extra RAM status:
  4872.  00h    VIDRAM does not use extra RAM
  4873.  01h    VIDRAM uses EMS as extra RAM
  4874.  02h    VIDRAM uses EGA as extra RAM
  4875.  
  4876. Bitfields for VIDRAM feature flags:
  4877. Bit(s)    Description    (Table 03083)
  4878.  0    override enabled
  4879.  1    mapped memory detected in A000h-B000h range
  4880.  2    top of memory not at 640K
  4881.  3    MDA detected
  4882.  4    high RAM exists in video area
  4883.  5    mapped memory detected in video area
  4884.  6-7    reserved???
  4885.  
  4886. Format of VIDRAM partial map context (EMS 3.2):
  4887. Offset    Size    Description    (Table 03084)
  4888.  00h    BYTE    EMS version ID (32h)
  4889.  01h    WORD    EMM handle for this entry
  4890.  03h    BYTE    number of frames
  4891.  04h    BYTE    first page frame
  4892.  05h    WORD    offset from ES to previously saved map
  4893.  
  4894. Format of VIDRAM partial map context (EMS 4.0):
  4895. Offset    Size    Description    (Table 03085)
  4896.  00h    BYTE    EMS version ID (40h)
  4897.  01h    WORD    mappable segment count
  4898.  03h  N WORD    mappable segments
  4899.     WORD    offset to previously saved map???
  4900. --------U-2FD202-----------------------------
  4901. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4902.     AX = D202h
  4903.     CX:BX -> parameter table
  4904. Return: AX = return value
  4905. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4906. --------R-2FD300BX4562-----------------------
  4907. INT 2F U - TeleReplica - INSTALLATION CHECK
  4908.     AX = D300h
  4909.     BX = 4562h
  4910.     CX = 2745h
  4911.     DX = serial port I/O base address??? (03F8h for v3.9)
  4912. Return: SI = segment of resident code
  4913.     AX = 251Dh
  4914.     BX = DF21h
  4915.     CX = F321h
  4916.     DX = ???
  4917. --------R-2FD3CB-----------------------------
  4918. INT 2F U - LapLink Quick Connect v6 - API
  4919.     AX = D3CBh
  4920.     CX = function
  4921.         0002h get ???
  4922.         Return: BX:AX -> ???
  4923.             CL = ???
  4924.             CH = ???
  4925.             DX = ???
  4926.             DI = COM1 I/O port???
  4927.             SI = COM2 I/O port???
  4928.         0003h initialization???
  4929.         0004h ???
  4930.         0005h initialization???
  4931.         0006h reset/clear ???
  4932.         Return: AX = 0000h
  4933.             ES:DI -> next byte after ??? cleared by this call
  4934.         0007h initialization???
  4935.         0008h uninstall
  4936.         Return: BX = status
  4937.                 0000h successful
  4938.                 FFFFh incomplete, stub remains in memory
  4939. Return: CX = 534Bh (except function 0002h)
  4940. Index:    uninstall;LapLink Quick Connect
  4941. --------K-2FD3D3BH00-------------------------
  4942. INT 2F - KDRIVE v2.x - INSTALLATION CHECK
  4943.     AX = D3D3h
  4944.     BH = 00h
  4945. Return: BX = 3D3Dh if installed
  4946.     CF clear if installed
  4947.         AX = driver ID??? (returns 0087h for KDRIVE.EXE and 0880h for
  4948.           KDRIVOS2.EXE in one examined version)
  4949. Program: KDRIVE is a shareware extended German keyboard driver by Martin
  4950.       Austermeier, originally based on K3 by Martin Gerdes as published
  4951.       in c't magazine 7/1988
  4952. --------l-2FD44D-----------------------------
  4953. INT 2F - 4DOS.COM v2.1+ - API
  4954.     AX = D44Dh
  4955.     BH = function
  4956.         00h installation check
  4957.         Return: AX = 44DDh
  4958.             BL = major version number
  4959.             BH = minor version number
  4960.             CX = PSP segment address for current invocation
  4961.             DL = 4DOS shell number (0 for the first (root) shell,
  4962.                   updated each time a new copy is loaded)
  4963.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4964.         Return: nothing
  4965.         (internal, v4.0+) ???
  4966.         Return: AX = 44DDh
  4967.             ES:BX -> data area (see #03086)
  4968.         02h ???
  4969.         DX = ???
  4970.         Note:    v5.52 signals "unrecoverable error" and then terminates
  4971.               with INT 21/AH=4Ch or enters a deliberate infinite
  4972.               loop if ???
  4973.     ---v2.1-3.03 only---
  4974.         03h EXEC program
  4975.         CX:DX -> EXEC record (see #03087)
  4976.         FEh deallocate shell number (passed through to root shell)
  4977.         ???
  4978.         FFh allocate shell number (passed through to root shell)
  4979.     ---v5.52---
  4980.         03h get ???
  4981.         BL = ??? (00h/01h)
  4982.         Return: DX = current value of ???
  4983.         04h set ???
  4984.         BL = ??? (00h/01h)
  4985.         DX = new value for ???
  4986. Note:    a bug in v3.00 will crash the system if unrecognized value in BH
  4987. SeeAlso: AX=D44Eh,AX=D44Fh/BX=0000h,AX=E44Dh,INT 21/AX=4403h"DOS"
  4988. SeeAlso: INT 14/AX=7000h
  4989. Index:    installation check;4DOS|installation check;NDOS
  4990.  
  4991. Format of 4DOS v4.0 data area:
  4992. Offset    Size    Description    (Table 03086)
  4993.  00h  2 BYTEs    ???
  4994.  06h    WORD    XMS handle for swapping
  4995.     ???
  4996. SeeAlso: #03087
  4997.  
  4998. Format of 4DOS EXEC v2.1-v3.03 record:
  4999. Offset    Size    Description    (Table 03087)
  5000.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  5001.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  5002.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  5003. SeeAlso: #03086
  5004. --------l-2FD44E-----------------------------
  5005. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  5006.     AX = D44Eh
  5007. ---4DOS v3.01+---
  5008.     BX = condition
  5009.         0000h 4DOS is ready to display prompt
  5010.         0001h 4DOS has displayed the prompt, about to accept user input
  5011. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  5012. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  5013. SeeAlso: AX=D44Dh
  5014. --------K-2FD44FBX0000-----------------------
  5015. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  5016.     AX = D44Fh
  5017.     BX = 0000h
  5018. Return: AX = 44DDh if installed
  5019. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  5020.       which emulate the 4DOS and NDOS keystack
  5021. SeeAlso: AX=D44Dh,AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
  5022. --------K-2FD44FBX0001-----------------------
  5023. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  5024.     AX = D44Fh
  5025.     BX = 0001h
  5026.     CX = number of keystrokes (01h-FFh)
  5027.     DS:DX -> keystroke list (one word per keystroke)
  5028. Return: AX = status
  5029.         0000h successful
  5030.         nonzero failed
  5031.     BX,CX,DX destroyed
  5032. Notes:    the keystrokes are the exact values to return from subsequent calls to
  5033.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  5034.         0000h causes subfunctions 01h and 11h to indicate an empty
  5035.               keyboard buffer
  5036.         FFFFh is followed by a word indicating the number of clock
  5037.               ticks to delay before the next faked keystroke
  5038.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  5039.       invocation, and does not range-check CX; it will overwrite memory
  5040.       following the resident portion if CX is greater than 100h.
  5041.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  5042.       which emulate the 4DOS and NDOS keystack
  5043. SeeAlso: AX=D44Dh,AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
  5044. --------G-2FD600-----------------------------
  5045. INT 2F - HEART.COM - INSTALLATION CHECK
  5046.     AX = D600h
  5047. Return: AX = 0303h (two hearts) if installed
  5048.         ES:DI -> buffer (see #03088)
  5049. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  5050. Notes:    Once the host program has identified the address of the data area, it
  5051.       can change this to indicate safe/critical, alternate colours, etc.
  5052.     The entries for the color table are in char/attrib form.  Every two
  5053.       entries form a pair which is alternated between 68 times a minute.
  5054.       The first half of the table is for color videos, the second mono.
  5055.       Within each half, the first half is for the safe chars, and the
  5056.       second for the critical chars.
  5057.  
  5058. Format of HEART.COM buffer:
  5059. Offset    Size    Description    (Table 03088)
  5060.  00h  8 WORDs    table of colors/attributes (refer to notes above)
  5061.  10h    BYTE    flags
  5062.         bit 0: program is in critical section, so flash double
  5063.               exclamation mark
  5064.         bit 1: program is in safe code, so flash the heart character
  5065.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  5066.         of second line)
  5067. --------T-2FD600-----------------------------
  5068. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  5069.     AX = D600h
  5070. Return: AL = D6h if installed
  5071. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  5072.       is a programmer's text editor by Greenview Data.
  5073. SeeAlso: AX=D601h,AX=D602h
  5074. --------T-2FD601-----------------------------
  5075. INT 2F U - VEDIT VSWAP - ???
  5076.     AX = D601h
  5077.     BL = subfunction number???
  5078. Return: BL = return code ???
  5079.     ES = resident portion's data??? segment
  5080.     DX = resident portion's code segment
  5081. SeeAlso: AX=D600h"VSWAP"
  5082. --------T-2FD602-----------------------------
  5083. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  5084.     AX = D602h
  5085.     other registers set as for INT 21/AX=4B00h
  5086. Return: CF set on error
  5087.         AL = error code
  5088.         82h = failure due to ???
  5089.     CF clear on success
  5090. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  5091. --------N-2FD701BX0000-----------------------
  5092. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  5093.     AX = D701h
  5094.     BX = 0000h
  5095. Return: AX = 0000h if installed
  5096.         BX = interrupt number (60h to 66h)
  5097.        nonzero not present
  5098. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  5099.       necessary to examine the four bytes preceding the handlers for
  5100.       INT 60 through INT 66 for the string "BANV"
  5101. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  5102. --------N-2FD702-----------------------------
  5103. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  5104.     AX = D702h
  5105.     BX = function
  5106.     ???
  5107. Return: ???
  5108. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  5109. --------N-2FD703-----------------------------
  5110. INT 2F U - Banyan VINES v4+ - MAIL interface
  5111.     AX = D703h
  5112.     BX = function
  5113.     ???
  5114. Return: ???
  5115. SeeAlso: AX=D702h,AX=D704h
  5116. --------N-2FD704-----------------------------
  5117. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  5118.     AX = D704h
  5119.     BX = function
  5120.     ???
  5121. Return: ???
  5122. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  5123. --------N-2FD800-----------------------------
  5124. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  5125.     AX = D800h
  5126. Return: AL = FFh if installed
  5127.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5128.         BX = data segment of resident copy
  5129.         ES:DI -> private API entry point (see #03089)
  5130.         SI = segment of resident code
  5131. SeeAlso: AX=7A00h,AX=D880h
  5132.  
  5133. (Table 03089)
  5134. Call CLIENT API entry point with:
  5135.     BX = function
  5136.         0000h get ???
  5137.         Return: DX = CLIENT version??? (0101h for v1.1)
  5138.             ES:BX -> ??? data
  5139.         0001h ???
  5140.         0002h ???
  5141.         0003h ???
  5142.         0004h ???
  5143.         0005h ???
  5144.         DL = ???
  5145.         ???
  5146.         Return: ???
  5147.         0006h get module name???
  5148.         ES:DI -> 16-byte buffer
  5149.         Return: CX = ???
  5150.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  5151.         0007h ???
  5152.         DX:CX = ???
  5153.         ???
  5154.         Return: ???
  5155.         0008h ???
  5156.         0009h ???
  5157.         DL = ???
  5158.         ES:DI -> 16-byte buffer for ???
  5159.         Return: CF clear if successful
  5160.                 AX = 0000h
  5161.                 CX = 0000h
  5162.                 SI,DI destroyed
  5163.             CF set on error
  5164.                 AX = error code 4903h
  5165.         000Ah ???
  5166.         AH = subfunction
  5167.             00h get ???
  5168.             01h clear/set ??? flag
  5169.             AL = new state (00h cleared, 01h set)
  5170.             02h set ???
  5171.             DX = new value of ???
  5172.         Return: DX = old value of ???
  5173.         000Bh ???
  5174.         AX = ???
  5175.         ???
  5176.         Return: ???
  5177.         000Ch ???
  5178.         AX = ???
  5179.         ???
  5180.         Return: ???
  5181.         000Dh ???
  5182.         AX = ???
  5183.         ???
  5184.         Return: ???
  5185.         000Eh get original INT 17
  5186.         Return: CF clear
  5187.             ES:BX -> original INT 17
  5188.         000Fh ???
  5189.         0010h ???
  5190.         AX = ???
  5191.         ???
  5192.         Return: ???
  5193.         0011h get ???
  5194.         Return: CF clear
  5195.             DL = ???
  5196.         0012h get ???
  5197.         AL = index of ???
  5198.         ES:DI -> 10-byte buffer for ???
  5199.         Return: CF clear if successful
  5200.                 ES:DI buffer filled
  5201.                 AX,CX destroyed
  5202.             CF set on error
  5203.                 AX = error code (4907h if AL out of range)
  5204.         0013h get ???
  5205.         Return: CF clear
  5206.             DH = ???
  5207.             DL = ???
  5208.         0014h ???
  5209.         DL = ???
  5210.         ???
  5211.         Return: CF clear if successful
  5212.                 ???
  5213.             CF set on error
  5214.                 AX = error code 8056h
  5215.         0015h ???
  5216.         DX = ???
  5217.         Return: ES:DI -> ???
  5218.         other
  5219.         Return: CF set
  5220.             AX = 0001h (invalid function)
  5221. --------N-2FD856-----------------------------
  5222. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  5223.     AX = D856h
  5224. Return: AX = 0001h if supported???
  5225.     BX = ??? (0004h for v1.1)
  5226.     CX = ??? (0F20h for v1.1)
  5227.     DS = segment of resident code
  5228.     ES = data segment of resident copy
  5229. Note:    this function is also supported by Personal NetWare SERVER, bundled
  5230.       with Novell DOS 7
  5231. --------N-2FD880-----------------------------
  5232. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  5233.     AX = D880h
  5234. Return: AL = FFh if installed
  5235.         DX = version number (binary, DH = major, DL = minor)
  5236.         BX = data segment of resident copy
  5237.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  5238.         ES:DI -> private API entry point (see #03090)
  5239.         SI = ??? (offset of configuration info?)
  5240.         AH may be destroyed
  5241. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  5242.       not set; instead, ES:SI points at the API entry point
  5243. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  5244.  
  5245. (Table 03090)
  5246. Call SERVER API entry point with:
  5247.     BX = function
  5248.         0000h ???
  5249.         ???
  5250.         Return: ???
  5251.         Note: closes open files by calling INT 21/AH=3Eh
  5252.         0001h get connection information
  5253.         DX = connection number (0001h-max connections)
  5254.         ES:DI -> 28-byte buffer for connection information
  5255.         Return: CF clear if successful
  5256.                 ES:DI buffer filled
  5257.             CF set on error
  5258.                 AX = FFFFh
  5259.     ---Personal NetWare only---
  5260.         0002h ???
  5261.         0003h ???
  5262.         0004h ???
  5263.         0005h ???
  5264.         0006h ???
  5265.         0007h ???
  5266.         other
  5267.         Return: CF set
  5268.             AX = 0001h (invalid function)
  5269. --------d-2FD8C0-----------------------------
  5270. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  5271.     AX = D8C0h
  5272. Return: AL = FFh if installed
  5273.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  5274.         DH = major version??? (01h for v1.1)
  5275.         DL = minor version??? (01h for v1.1)
  5276.         ES:DI -> private API entry point (see #03091)
  5277. Program: NLCACHE is a disk cache included with NetWare Lite
  5278. SeeAlso: AX=D800h,AX=D880h
  5279.  
  5280. (Table 03091)
  5281. Call NLCACHE/NWCACHE API entry point with:
  5282.     BX = function
  5283.         0000h ???
  5284.         ???
  5285.         Return: CF clear if successful
  5286.                 AX = 0000h
  5287.                 ???
  5288.             CF set on error
  5289.                 AX = error code
  5290.         0001h (NWCACHE only) ???
  5291.         ES:DI -> buffer for ???
  5292.         Return: ???
  5293.         other
  5294.         Return: CF set
  5295.             AX = 0001h (invalid function)
  5296. --------F-2FDA00-----------------------------
  5297. INT 2F - ZyXEL ZFAX v1.x - INSTALLATION CHECK
  5298.     AX = DA00h
  5299. Return: AH = enabled state (00h = enabled, 01h = disabled)
  5300.     AL = 5Ah installed
  5301. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5302.       fax modems.
  5303. Note:    This function, and the other DAxxh functions, may apply only to version
  5304.       1 of the software; see AX=DB00h for the version 2 installation check
  5305. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  5306. --------F-2FDA01-----------------------------
  5307. INT 2F - ZyXEL ZFAX v1.x - UNINSTALL
  5308.     AX = DA01h
  5309. Return: AL = 00h Success
  5310.          01h Failure
  5311. SeeAlso: AX=DA00h,AX=DB01h
  5312. --------F-2FDA02-----------------------------
  5313. INT 2F - ZyXEL ZFAX v.1x - DISABLE
  5314.     AX = DA02h
  5315. Return: AL = 00h
  5316. SeeAlso: AX=DA03h,AX=DB02h
  5317. --------F-2FDA03-----------------------------
  5318. INT 2F - ZyXEL ZFAX v1.x - ENABLE
  5319.     AX = DA03h
  5320. Return: AL = 00h
  5321. SeeAlso: AX=DA02h,AX=DB03h
  5322. --------G-2FDA55-----------------------------
  5323. INT 2F U - TRAP.COM - INSTALLATION CHECK
  5324.     AX = DA55h
  5325.     DL = interrupt number
  5326.     DH = ???
  5327. Return: if installed
  5328.         AH = interrupt number
  5329.         AL = ???
  5330.         ES:BX -> ???
  5331. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  5332. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  5333.       the interrupt number is part of the installation check
  5334. --------N-2FDAB2-----------------------------
  5335. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  5336.     AX = DAB2h
  5337. Return: AX = 00FFh if installed
  5338.         BX:CX -> MIB table
  5339. Program: BWSNMP is part of the BW-NFS package
  5340. SeeAlso: INT 62/AH=00h"ETHDEV"
  5341. --------F-2FDB00-----------------------------
  5342. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  5343.     AX = DB00h
  5344. Return: AL = 5Bh if installed (v2.x)
  5345.         ES:BX -> configuration table???
  5346.     AX = 00DBh if installed (v3)
  5347.         ES:BX -> ZFAX configuration table (see #03092)
  5348. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5349.       Fax modems.
  5350. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  5351.  
  5352. Format of ZFAX Configuration Table:
  5353. Offset    Size    Description    (Table 03092)
  5354.  00h    WORD    table version number (0300h for v3.0-v4.01)
  5355.  02h    BYTE    reserved
  5356.  03h 70 BYTEs    ZFAX working path
  5357.  49h 128 BYTEs    path to external editor
  5358.  C9h 128 BYTEs    path to external terminal emulator
  5359. 149h 128 BYTEs    path to Ring Shell
  5360. 1C9h 128 BYTEs    path to DOS Shell
  5361. 249h 128 BYTEs    path to Data Shell
  5362. 2C9h 70 BYTEs    path to Chinese font
  5363. 30Fh    BYTE    printer type (see #03093)
  5364. 310h    BYTE    printer port (00h = LPT1, etc.)
  5365. 311h    BYTE    type of graphics adapter
  5366.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  5367. 312h    BYTE    display type
  5368.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  5369. 313h    BYTE    scan code for ZFAX hotkey (see #00006)
  5370. 314h    BYTE    shift mask for ZFAX hotkey
  5371. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  5372. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  5373. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  5374. 318h    BYTE    normal ring answer type (see #03094)
  5375. 319h    BYTE    Ring 1 answer type (see #03094)
  5376. 31Ah    BYTE    Ring 2 answer type (see #03094)
  5377. 31Bh    BYTE    Ring 3 answer type (see #03094)
  5378. 31Ch    BYTE    COM port for modem
  5379. 31Dh    BYTE    speaker volume (00h-07h)
  5380. 31Eh    BYTE    modem dial timer, seconds
  5381. 31Fh    WORD    user-defined COM port I/O address
  5382. 321h    BYTE    user-defined COM port IRQ number
  5383. 322h 81 BYTEs    dial prefix string
  5384. 373h 79 BYTEs    dial postfix string
  5385. 3C2h    BYTE    ring count until automatic answer
  5386. 3C3h    BYTE    retry count on busy signal
  5387. 3C4h    BYTE    redial delay in seconds
  5388. 3C5h    WORD    system password
  5389. 3C7h    BYTE    reserved
  5390. 3C8h    BYTE    voice file compression format
  5391.         00h CELP at 9600bps
  5392.         01h two-bit ADPCM at 19200bps
  5393.         02h three-bit ADPCM at 28800bps
  5394. 3C9h    BYTE    voice system: DTMF 0 action (see #03095)
  5395. 3CAh    BYTE    voice system: DTMF 1 action
  5396. 3CBh    BYTE    voice system: DTMF 2 action
  5397. 3CCh    BYTE    voice system: DTMF 3 action
  5398. 3CDh    BYTE    voice system: DTMF 4 action
  5399. 3CEh    BYTE    voice system: DTMF 5 action
  5400. 3CFh    BYTE    voice system: DTMF 6 action
  5401. 3D0h    BYTE    voice system: DTMF 7 action
  5402. 3D1h    BYTE    voice system: DTMF 8 action
  5403. 3D2h    BYTE    voice system: DTMF 9 action (see #03095)
  5404. 3D3h    WORD    reserved
  5405. 3D5h 25 BYTEs    local FAX ID to display on page header
  5406. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  5407. 402h    BYTE    FAX page size
  5408.         00h A4 (210x297mm)
  5409.         01h B4 (250x353mm)
  5410.         02h A3 (297x420mm)
  5411. 403h    BYTE    FAX resolution
  5412.         00h normal (3.85 pixels/mm)
  5413.         01h high (7.7 pixels/mm)
  5414. 404h    BYTE    FAX coding scheme
  5415.         00h 1-D, modified Huffman coding
  5416.         01h 2-D, modified READ coding
  5417. 405h    BYTE    left margin for text in millimeters
  5418. 406h    BYTE    vertical insertion for text in mm (0-20)
  5419. 407h    BYTE    horizontal insertion in mm (0-20)
  5420. 408h    BYTE    maximum text lines per page
  5421. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  5422. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  5423. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  5424. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  5425. 40Dh 81 BYTEs    cover page logo filename
  5426. 45Eh 65 BYTEs    cover page sender name
  5427. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  5428. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  5429. 4A1h    BYTE    print capture printer port
  5430. 4A2h    BYTE    print capture timer in seconds
  5431. 4A3h    BYTE    scan code for print capture hotkey (see #00006)
  5432. 4A4h    BYTE    shift mask for print capture hotkey
  5433. 4A5h    BYTE    DataShell type
  5434.         00h internal Zmodem, 01h Data Shell, 02h disable
  5435. 4A6h    BYTE    video I/O type
  5436.         00h auto-detect, 01h use BIOS, 02h direct writes
  5437. 4A7h    BYTE    call transfer digits (0-9)
  5438. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  5439.  
  5440. (Table 03093)
  5441. Values for ZFAX printer type:
  5442.  00h    EPSON FX (9 pins)
  5443.  01h    EPSON LQ (24 pins)
  5444.  02h    HP Laser Jet II, letter size
  5445.  03h    HP Laser Jet II, legal size
  5446.  04h    HP Laser Jet II, A4 size
  5447.  05h    HP Laser Jet III, letter size
  5448.  06h    HP Laser Jet III, legal size
  5449.  07h    HP Laser Jet III, A4 size
  5450. SeeAlso: #03092
  5451.  
  5452. (Table 03094)
  5453. Values for Ring Answer Type:
  5454.  00h    voice system
  5455.  01h    FAX only
  5456.  02h    Data Shell
  5457.  03h    Ring Shell
  5458.  04h    DOS Shell
  5459.  05h    ignore
  5460. SeeAlso: #03092
  5461.  
  5462. (Table 03095)
  5463. Values for DTMF action:
  5464.  00h    none
  5465.  01h    page operator
  5466.  02h    FaxBack
  5467.  03h    announcement
  5468.  04h    call transfer
  5469.  05h    receive FAX
  5470.  06h    receive data
  5471.  07h    voice mailbox
  5472.  08h    DOS Shell Out
  5473.  09h    Data Shell Out
  5474. SeeAlso: #03092
  5475. --------U-2FDB00-----------------------------
  5476. INT 2F U - WINGO.COM - INSTALLATION CHECK
  5477.     AX = DB00h
  5478. Return: AX = FFFFh if installed
  5479.     CX = 5749h ('WI') if installed
  5480.     DX = 4E47h ('NG') if installed
  5481.         ES = segment of resident code
  5482. Program: WINGO.COM is TSR for starting Windows programs from DOS
  5483.       prompt (together with companion Windows program
  5484.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  5485.       PC Magazine
  5486. Range:    AH=DBh to AH=FFh, selected by scanning for a free multiplex number
  5487. SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  5488. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  5489. --------F-2FDB01-----------------------------
  5490. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  5491.     AX = DB01h
  5492. Return: AX = status
  5493.         0000h successful
  5494.         0001h ZFAX is busy
  5495.         0002h another program resident above ZFAX
  5496. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  5497.       not been hooked by other TSRs and releases the TSR's memory
  5498.     ZFAX v2.x crashes the contributor's machine when this function is
  5499.       called
  5500. SeeAlso: AX=DA01h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
  5501. --------U-2FDB01-----------------------------
  5502. INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
  5503.     AX = DB01h
  5504.     CX:DX -> new callback function
  5505. Return: AX = 0000h
  5506.     CX:DX -> end of resident code (stack ???)
  5507. Desc:    the callback function is used for WINGO <-> WINSTART communication
  5508. SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  5509. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  5510. --------F-2FDB02-----------------------------
  5511. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  5512.     AX = DB02h
  5513. Return: AL = 00h
  5514. SeeAlso: AX=DA02h,AX=DB00h"ZFAX",AX=DB01h"ZFAX",AX=DB03h"ZFAX"
  5515. --------U-2FDB02-----------------------------
  5516. INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
  5517.     AX = DB02h
  5518. Return: AX = 0000h
  5519. Desc:    the callback function is used for WINGO <-> WINSTART communication
  5520. SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  5521. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  5522. --------F-2FDB03-----------------------------
  5523. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  5524.     AX = DB03h
  5525. Return: AL = 00h
  5526. SeeAlso: AX=DA03h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
  5527. --------U-2FDB03-----------------------------
  5528. INT 2F U - WINGO.COM - SET ??? FLAG
  5529.     AX = DB03h
  5530. Return: AX = 0000h
  5531. SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  5532. --------U-2FDB04-----------------------------
  5533. INT 2F U - WINGO.COM - RESET ??? FLAG
  5534.     AX = DB04h
  5535. Return: AX = 0000h
  5536. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  5537. --------U-2FDB05-----------------------------
  5538. INT 2F U - WINGO.COM - GET ??? FLAG
  5539.     AX = DB05h
  5540. Return: AX = 0000h
  5541.     DX = unknown flag - 0 or 1
  5542. Program: WINGO.COM is TSR for starting Windows programs from DOS
  5543.       prompt (together with companion Windows program
  5544.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  5545.       PC Magazine
  5546. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  5547. --------U-2FDB06-----------------------------
  5548. INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
  5549.     AX = DB06h
  5550. Return: AX = return value of INT 2F/AX=1685h
  5551. Note:    uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
  5552.       call the callback function previously set by AX=DB01h
  5553.     used for WINGO <-> WINSTART communication
  5554. SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
  5555. SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
  5556. --------F-2FDB10-----------------------------
  5557. INT 2F - ZyXEL ZFAX v3+ - EXECUTE ZFAX MAIN MENU
  5558.     AX = DB10h
  5559. SeeAlso: AX=DB00h"ZFAX",AX=DB11h"ZFAX"
  5560. --------F-2FDB11-----------------------------
  5561. INT 2F - ZyXEL ZFAX v3+ - SEND FAX
  5562.     AX = DB11h
  5563.     DS:SI -> filename including path (max 128 characters)
  5564.     DS:BX -> remote FAX number
  5565. Return: AX = status (see #03096)
  5566. SeeAlso: AX=DB00h"ZFAX",AX=DB12h,AX=DB13h,AX=DB14h,AX=DB15h,AX=DB20h,AX=DB21h
  5567.  
  5568. (Table 03096)
  5569. Values for ZFAX status:
  5570.  00h    OK
  5571.  01h    invalid DOS function
  5572.  02h    file not found
  5573.  03h    path not found
  5574.  04h    no file handle available
  5575.  05h    access denied by DOS
  5576.  06h    invalid handle
  5577.  07h    disk full
  5578.  10h    printer error
  5579.  11h    no graphics font
  5580.  12h    no ZFAX font
  5581.  20h    DCD dropped while sending
  5582.  21h    not ZyXEL modem
  5583.  22h    busy
  5584.  23h    no response from COM port
  5585.  24h    no carrier
  5586.  25h    no dial tone
  5587.  26h    no answer
  5588.  27h    no response
  5589.  28h    failed to send FAX
  5590.  30h    user aborted
  5591.  40h    critical error on disk
  5592.  50h    parameter error
  5593. --------F-2FDB12-----------------------------
  5594. INT 2F - ZyXEL ZFAX v3+ - PRINT FAX
  5595.     AX = DB12h
  5596.     DS:SI -> filename, including path (max 128 characters)
  5597. Return: AX = status (see #03096)
  5598. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  5599. --------F-2FDB13-----------------------------
  5600. INT 2F - ZyXEL ZFAX v3+ - CONVERT FAX
  5601.     AX = DB13h
  5602.     DS:SI -> source filename, including path (max 128 characters)
  5603.     DS:BX -> destination filename, including path (max 80 characters)
  5604.     CX = destination file format
  5605.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  5606. Return: AX = status (see #03096)
  5607. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  5608. --------F-2FDB14-----------------------------
  5609. INT 2F - ZyXEL ZFAX v3+ - VIEW FAX
  5610.     AX = DB14h
  5611.     DS:SI -> source filename, including path (max 128 characters)
  5612. Return: AX = status (see #03096)
  5613. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  5614. --------F-2FDB15-----------------------------
  5615. INT 2F - ZyXEL ZFAX v4.01 - SEND FAX WITH LOGO AND SIGNATURE
  5616.     AX = DB15h
  5617.     DS:SI -> source filename, including path (max 128 characters)
  5618.     DS:BX -> remote FAX number
  5619.     DS:CX -> Logo filename
  5620.     DS:DX -> Signature filename
  5621. Return: AX = status (see #03096)
  5622. SeeAlso: AX=DB00h"ZFAX",AX=DB11h
  5623. --------F-2FDB16-----------------------------
  5624. INT 2F - ZyXEL ZFAX v4.01 - QUOTE PREVIOUS STATUS
  5625.     AX = DB16h
  5626. Return: DX:AX -> previous receive state transaction log (see #03097)
  5627.     BX = type (00h incoming FAX, 01h incoming data, 02h incoming voice)
  5628. SeeAlso: AX=DB00h"ZFAX",AX=DB11h,AX=DB17h
  5629.  
  5630. Format of ZFAX transaction log receive state:
  5631. Offset    Size    Description    (Table 03097)
  5632.  00h    WORD    year
  5633.  02h    WORD    date
  5634.  04h    WORD    time
  5635.  06h    WORD    extension number
  5636.  08h    WORD    type: 00h incoming FAX, 01h outgoing FAX, 02h voice message
  5637.  0Ah    WORD    status: 00h normal, 01h remote delete
  5638.  0Ch 125 BYTEs    filename
  5639.  89h 24 BYTEs    caller ID
  5640.  A1h 20 BYTEs    FAX number
  5641.  B5h 20 BYTEs    remote FAX ID
  5642.  C9h    WORD    error code
  5643.  CBh    WORD    connection direction (00h transmit, 01h receive)
  5644.  CDh    BYTE    connection time minutes
  5645.  CEh    BYTE    connection time seconds
  5646.  CFh    BYTE    ???
  5647.  D0h    WORD    connection speed (24, 48, 72, 96, 12, 144)
  5648.  D2h    WORD    connection page size (A4, B4, A3)
  5649.  D4h    WORD    connection coding scheme (1-DN, 1-DH, 2-DN, 2-DH)
  5650.  D6h    WORD    page count
  5651. --------F-2FDB17-----------------------------
  5652. INT 2F - ZyXEL ZFAX v4.01 - BEGIN RECEIVING INCOMING CALL
  5653.     AX = DB17h
  5654. Return: AX = status (0000h successful, 0001h unable to start at this time)
  5655. SeeAlso: AX=DB00h"ZFAX"
  5656. --------F-2FDB18-----------------------------
  5657. INT 2F - ZyXEL ZFAX v4.01 - SCHEDULE CALL
  5658.     AX = DB18h
  5659.     DS:SI -> schedule data (see #03097)
  5660. Return: AX = status (see #03096)
  5661. SeeAlso: AX=DB00h"ZFAX"
  5662. --------F-2FDB20-----------------------------
  5663. INT 2F - ZyXEL ZFAX v3+ - POLL FAX
  5664.     AX = DB20h
  5665.     DS:SI -> remote FAX number
  5666. Return: AX = status (see #03096)
  5667. SeeAlso: AX=DB11h,AX=DB21h
  5668. --------F-2FDB21-----------------------------
  5669. INT 2F - ZyXEL ZFAX v3+ - SEND VOICE
  5670.     AX = DB21h
  5671.     DS:SI -> filename including path (max 128 characters)
  5672.     DS:BX -> remote phone number
  5673. Return: AX = status (see #03096)
  5674. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  5675. --------F-2FDB22-----------------------------
  5676. INT 2F - ZyXEL ZFAX v3+ - CONVERT VOICE FILE
  5677.     AX = DB22h
  5678.     DS:SI -> source filename, including path (max 128 characters)
  5679.     DS:BX -> destination filename, including path (max 80 characters)
  5680.     CX = destination format
  5681.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  5682. Return: AX = status (see #03096)
  5683. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  5684. --------F-2FDB23-----------------------------
  5685. INT 2F - ZyXEL ZFAX v3+ - RECORD VOICE FILE
  5686.     AX = DB23h
  5687.     DS:SI -> destination filename, including path (max 128 characters)
  5688.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  5689.     DX = voice file format
  5690.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  5691. Return: AX = status (see #03096)
  5692. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5693. --------F-2FDB24-----------------------------
  5694. INT 2F - ZyXEL ZFAX v3+ - PLAY VOICE FILE
  5695.     AX = DB24h
  5696.     DS:SI -> name of voice file, including path (max 128 characters)
  5697.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  5698. Return: AX = status (see #03096)
  5699. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5700. --------F-2FDB25-----------------------------
  5701. INT 2F - ZyXEL ZFAX v3+ - ANSWER MODEM WITH VOICE SYSTEM
  5702.     AX = DB25h
  5703. Return: AX = status (see #03096)
  5704. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  5705. --------F-2FDB26-----------------------------
  5706. INT 2F - ZyXEL ZFAX v3+ - DIAL PHONE
  5707.     AX = DB26h
  5708.     DS:SI -> remote phone number
  5709. Return: AX = status (see #03096)
  5710. SeeAlso: AX=DB25h
  5711. --------F-2FDB27-----------------------------
  5712. INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  5713.     AX = DB27h
  5714. Return: AX = status (see #03096)
  5715. SeeAlso: AX=DB25h,AX=DB28h
  5716. --------F-2FDB28-----------------------------
  5717. INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  5718.     AX = DB28h
  5719. Return: AX = status (see #03096)
  5720. SeeAlso: AX=DB25h,AX=DB27h,AX=DB41h
  5721. --------F-2FDB40-----------------------------
  5722. INT 2F - ZyXEL ZFAX v3+ - INTERNAL TERMINAL
  5723.     AX = DB40h
  5724. Return: AX = status (see #03096)
  5725. SeeAlso: AX=DB00h
  5726. --------F-2FDB41-----------------------------
  5727. INT 2F - ZyXEL ZFAX v3+ - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  5728.     AX = DB41h
  5729.     DS:SI -> source file name, including path (max 128 characters)
  5730.     DS:BX -> remote data number
  5731. Return: AX = status (see #03096)
  5732. SeeAlso: AX=DB00h,AX=DB28h
  5733. --------K-2FDC00-----------------------------
  5734. INT 2F - GOLD.COM - INSTALLATION CHECK
  5735.     AX = DC00h
  5736. Return: AL = state
  5737.         00h not installed
  5738.         FFh installed
  5739. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the
  5740.       code for F1; the purpose is to improve Kermit's VTxxx emulation
  5741. --------K-2FDC01-----------------------------
  5742. INT 2F - GOLD.COM - GET STATE
  5743.     AX = DC01h
  5744. Return: AL = status
  5745.         00h off
  5746.         01h on
  5747. SeeAlso: AX=DC00h,AX=DC02h
  5748. --------K-2FDC02-----------------------------
  5749. INT 2F - GOLD.COM - SET STATE
  5750.     AX = DC02h
  5751.     DL = new state
  5752.         00h off
  5753.         01h on
  5754. Return: AL = 00h (OK)
  5755. SeeAlso: AX=DC01h
  5756. --------t-2FDD-------------------------------
  5757. INT 2F - CappaCom programs - API
  5758.     AH = DDh
  5759.     AL = 00h general installation check
  5760.         Return: AL = FFh if any CappaCom programs are resident
  5761.     AL = FEh get info
  5762.         Return: ES:BX -> TSR info list (see #03098)
  5763.     AL = program identifier
  5764.         BH = function
  5765.         FDh get version
  5766.             Return: BX = version
  5767.         FFh installation check
  5768.             Return: AL = FFh if installed
  5769.                 BX = version
  5770.                 ES = segment of resident code
  5771.         others vary by program
  5772. Return: AL = status
  5773.         bit 7 set on error
  5774.         AL = 81h unknown function
  5775. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  5776.       conflict
  5777. Index:    installation check;SoftCom programs
  5778. Index:    installation check;CappaCom programs
  5779.  
  5780. Format of CappaCom TSR info list:
  5781. Offset    Size    Description    (Table 03098)
  5782.  00h  9 BYTEs    blank-padded ASCIZ program name
  5783.  09h    BYTE    program ID
  5784.  0Ah    WORD    program's PSP segment
  5785.  0Ch    WORD    program version (major in high byte)
  5786.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  5787.  12h    BYTE    number of interrupts hooked
  5788.  13h  5 BYTEs    interrupt numbers hooked by program
  5789.  18h  8 BYTEs    reserved
  5790. ----------2FDD-------------------------------
  5791. INT 2F - MIXFIX.EXE - API
  5792.     AH = DDh
  5793.     AL = function
  5794.         00h installation check
  5795.         Return: AX = 00DDh if installed
  5796.                 BX = version (BH = major, BL = minor)
  5797.         41h/61h get From: address
  5798.         Return: AX = 0001h
  5799.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  5800.         49h/69h get To: address
  5801.         Return: AX = 0001h
  5802.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  5803.         4Ah/6Ah get subject of mail
  5804.         Return: AX = 0001h
  5805.             ES:BX -> ASCIZ subject of handled mail
  5806.         4Dh/6Dh get mail name
  5807.         Return: AX = 0001h
  5808.             ES:BX -> ASCIZ full name of current mail file
  5809.         4Eh/6Eh get From: field
  5810.         Return: AX = 0001h
  5811.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  5812. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  5813.       other programs for mail handling.  The called programs may use the
  5814.       services described here to retrieve information about the mail being
  5815.       handled.
  5816. Index: installation check;MIXFIX.EXE
  5817. --------d-2FDD--BX7844-----------------------
  5818. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  5819.     AH = DDh
  5820.     BX = 7844h ('xD')
  5821.     CX = 4953h ('IS')
  5822.     DX = 4B3Fh ('K?')
  5823.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  5824.     ES:DI -> 25-byte data buffer (see #03099)
  5825. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  5826.        BX = 87BBh
  5827.        DX = B4C0h
  5828.        ES:DI buffer filled
  5829.     CX,CF destroyed
  5830. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  5831.  
  5832. Format of xDISK data buffer:
  5833. Offset    Size    Description    (Table 03099)
  5834.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  5835.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  5836.  05h    BYTE    flag: 01h if write protected, 00h if not
  5837.  06h    BYTE    flag: 01h if root directory full, 00h if not
  5838.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  5839.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  5840.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  5841.  0Ah  2 BYTEs    reserved
  5842.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  5843.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  5844.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  5845.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  5846.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  5847.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  5848.  12h    BYTE    flag: 01h terse display, 00h verbose display
  5849.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  5850.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  5851.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  5852.  16h    WORD    count of open files in RAM disk
  5853.  18h    BYTE    unused
  5854. --------N-2FDE00BL00-------------------------
  5855. INT 2F U - Novell Netware - RPRINTER, NPRINTER - INSTALLATION CHECK
  5856.     AX = DE00h
  5857.     BL = 00h
  5858. Return: AL = FFh If Rprinter/Nprinter Installed
  5859.     BX -> Program Segment Prefix N/Rprinter.exe
  5860. --------Q-2FDE00BX4456-----------------------
  5861. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  5862.     AX = DE00h
  5863.     BX = 4456h ("DV")
  5864.     CX = 5844h ("XD")
  5865.     DX = 4931h ("I1")
  5866. Return: AL = FFh if installed (even if other registers do not match)
  5867.     if BX,CX, and DX were as specified on entry,
  5868.         BX = 4845h ("HE")
  5869.         CX = 5245h ("RE")
  5870.         DX = 4456h ("DV")
  5871. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  5872. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  5873.       issue DESQview API calls other than those allowed from hardware ints
  5874. SeeAlso: AX=DE02h,INT 15/AX=5400h
  5875. --------Q-2FDE01-----------------------------
  5876. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  5877.     AX = DE01h
  5878.     BX = driver ID
  5879.     other registers as needed by driver
  5880. Notes:    XDI drivers should pass this call through to previous handler if ID
  5881.       does not match
  5882.     DESQview never calls this function
  5883. --------Q-2FDE01BX4450-----------------------
  5884. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  5885.     AX = DE01h
  5886.     BX = 4450h ("DP")
  5887.     CX = 4D49h ("MI")
  5888.     DX = 3039h ("09")
  5889. Return: AL = FFh if installed
  5890.         BX = 4D42h ("MB")
  5891.         CX = 4921h ("I!")
  5892.         DX = 8F4Fh
  5893.         ES:DI -> filename of DPMI host overlay
  5894. InstallCheck:    test for the existence of the character device QDPMI$$$
  5895. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  5896. Index:    installation check;QDPMI
  5897. --------U-2FDE01BX5242-----------------------
  5898. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  5899.     AX = DE01h
  5900.     BX = 5242h ("RB")
  5901.     CX:DX = program identifier
  5902.         656F7000h ("eop",0) for DVeop
  5903. Return: AX = 5242h ("RB") if installed
  5904.         ES:BX -> data or entry point (see #03100)
  5905.         CX = version number (CH = major, CL = minor)
  5906.  
  5907. (Table 03100)
  5908. Call DVeop entry point with:
  5909.     ES:DI -> callback address or 0000h:0000h to remove callback
  5910. Return: AX = status
  5911.         0000h failed (callback table full or attempted to remove non-
  5912.           existent callback)
  5913.         0001h successful
  5914.         ES:DI -> chaining address
  5915.     BX,CX,DX destroyed
  5916. Notes:    the callback function is called with a simulated interrupt when the
  5917.       DESQview window containing it is closed; it should perform all
  5918.       necessary cleanup and then perform a FAR jump to the chaining address
  5919.       or an IRET if the chaining address is 0000h:0000h
  5920.     if the program wishes to remove itself before the window is closed, it
  5921.       should call the DVeop entry point with the previously returned
  5922.       chaining address and ignore the returned chaining address.
  5923. --------U-2FDE01BX7474-----------------------
  5924. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  5925.     AX = DE01h
  5926.     BX = 7474h
  5927.     CL = function
  5928.         00h installation check
  5929.         Return: AL = FFh
  5930.         01h get process handle
  5931.         DX = keys on Open Window menu (DL = first, DH = second)
  5932.         Return: AX = process handle or 0000h if not running
  5933.         02h (v1.3+) set TMAN handle
  5934.         DX = TMAN process handle
  5935.         03h (v1.3+) set open keys to ignore on next CL=01h call
  5936.         DX = keys on Open Window menu (DL = first, DH = second)
  5937. Return: BX = 4F4Bh ("OK")
  5938.     DL destroyed
  5939. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  5940.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  5941. Index:    installation check;DVTXDI
  5942. --------U-2FDE01BX7575-----------------------
  5943. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  5944.     AX = DE01h
  5945.     BX = 7575h
  5946.     CX = function
  5947.         0000h installation check
  5948.         Return: AX = 00FFh if installed
  5949.         0001h turn on notification (currently unused)
  5950.         Return: AX = 0001h
  5951.         0002h turn off notification (currently unused)
  5952.         Return: AX = 0001h
  5953.         0003h get process information
  5954.         Return: AX = status
  5955.                 0000h failed
  5956.                 0001h successful
  5957.                 BX = last instantaneous time slice
  5958.                     in 1/100s (v1.10)
  5959.                     in 1/18s (v1.11+)
  5960.                 CX = number of processes
  5961.                 DX = number of "(starting)" records (v2.00+)
  5962.                 SI = number of records in process info array
  5963.                       (v2.00+) (always 15 for v1.x)
  5964.                 ES:DI -> process info array (see #03101,#03102)
  5965.         0004h get version
  5966.         Return: AH = major version
  5967.             AL = minor version
  5968.         0005h (v1.10+) get time since DESQview started
  5969.         Return: DX:AX = 1/100s since DV start (v1.10)
  5970.             DX:AX = 1/18s since DV start (v1.11+)
  5971.         0006h (v1.10+) get number of task switches
  5972.         Return: DX:AX = total task switches
  5973.             CX = task switches in last instantaneous interval
  5974. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  5975.       Daniel J. Bodoh
  5976.     for v1.00, function 0003h allocates common memory, which the caller
  5977.       must deallocate after reading the process information; only the
  5978.       currently used records are placed in the buffer
  5979.     for v1.10+, function 0003h merely returns a pointer to the internal
  5980.       array of process information; the caller should make a copy of the
  5981.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  5982.       those records with bit 7 of the first byte set are valid.
  5983. Index:    installation check;DVSIXDI
  5984.  
  5985. Format of DVSIXDI v1.00 information for one process:
  5986. Offset    Size    Description    (Table 03101)
  5987.  00h    BYTE    flags
  5988.         bit 7: process slot is valid
  5989.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  5990.           Open Windows menu, else undefined
  5991.  03h    WORD    Switch Windows window number
  5992.  05h    WORD    segment of process handle
  5993.  07h    WORD    number of tasks owned by process
  5994.  09h    WORD    mapping context of process (see #00416 at INT 15/AX=1016h)
  5995.  0Bh    DWORD    hook for other programs
  5996.  
  5997. Format of DVSIXDI v1.10-v2.00 information for one process:
  5998. Offset    Size    Description    (Table 03102)
  5999.  00h    BYTE    process flags (see #03103)
  6000.  01h    WORD    Open Window keys
  6001.  03h    WORD    Switch Windows number
  6002.  05h    WORD    segment of process handle
  6003.  07h    WORD    number of tasks for process
  6004.  09h    WORD    process mapping context
  6005.  0Bh    DWORD    time process started (relative to start of DESQview)
  6006.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  6007.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  6008.  17h    DWORD    total CPU time since process started
  6009.  1Bh    DWORD    CPU time at start of current instantaneous interval
  6010.  1Fh    DWORD    CPU time in current instantaneous interval
  6011.  23h    DWORD    hook for other programs
  6012. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  6013.  
  6014. Bitfields for DVSIXDI process flags:
  6015. Bit(s)    Description    (Table 03103)
  6016.  7    valid record
  6017.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  6018.       and only offsets 01h and 09h are valid
  6019.  5    (v2.00+) this app currently owns the CPU
  6020.  4    reserved (0)
  6021.  3    DESQview system task
  6022.  2    reserved (0)
  6023.  1    task has keyboard (currently unused)
  6024.  0    task swapped out (currently unused)
  6025. --------Q-2FDE01BXFFFE-----------------------
  6026. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  6027.     AX = DE01h
  6028.     BX = FFFEh
  6029.     CX = 4D47h ("MG")
  6030.     DX = 0052h (0,"R")
  6031. Return: AL = FFh
  6032.     DX = 584Dh
  6033. --------Q-2FDE02-----------------------------
  6034. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  6035.     AX = DE02h
  6036.     BX = mapping context of DESQview
  6037.     DX = handle of DESQview system task
  6038. Note:    driver should pass this call to previous handler after doing its work
  6039. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  6040. --------Q-2FDE03-----------------------------
  6041. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  6042.     AX = DE03h
  6043.     BX = mapping context of DESQview
  6044.     DX = handle of DESQview system task
  6045. Notes:    driver should pass this call to previous handler before doing its work
  6046.     DESQview makes this call when it is exiting, but before unhooking any
  6047.       interrupt vectors
  6048. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  6049. --------Q-2FDE04-----------------------------
  6050. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  6051.     AX = DE04h
  6052.     BX = mapping context of new process (see #00416 at INT 15/AX=1016h)
  6053.     DX = handle of process
  6054. Return: nothing
  6055. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  6056.       (see #03104) from "common" memory to control access to XMS memory
  6057.     all DOS, BIOS, and DV API calls are valid in handler
  6058.     driver should pass this call to previous handler after processing it
  6059. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  6060.  
  6061. Format of XMS XDI structure:
  6062. Offset    Size    Description    (Table 03104)
  6063.  00h    DWORD    pointer to 10-byte record???
  6064.  04h    DWORD    pointer to next XMS XDI structure
  6065.  08h    WORD    mapping context
  6066.  0Ah    BYTE    ???
  6067.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h"XMS"
  6068.         (FAR jump to next field)
  6069.  10h  6 BYTEs    FAR handler for XMS driver entry point
  6070.         (consists of a FAR CALL followed by RETF)
  6071. --------Q-2FDE05-----------------------------
  6072. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  6073.     AX = DE05h
  6074.     BX = mapping context of process (see #00416 at INT 15/AX=1016h)
  6075.     DX = handle of last task in process
  6076. Return: nothing
  6077. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  6078.     driver should pass this call to previous handler before processing it
  6079.     all DOS, BIOS, and DV API calls except those generating a task switch
  6080.       are valid in handler
  6081. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  6082. --------Q-2FDE06-----------------------------
  6083. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  6084.     AX = DE06h
  6085.     BX = mapping context of process containing task
  6086.     DX = handle of new task
  6087. Notes:    driver should pass this call to previous handler after processing it
  6088.     all DOS, BIOS, and DV API calls are valid in handler
  6089. --------Q-2FDE07-----------------------------
  6090. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  6091.     AX = DE07h
  6092.     BX = mapping context of process containing task
  6093.     DX = handle of task
  6094. Notes:    driver should pass this call to previous handler before processing it
  6095.     all DOS, BIOS, and DV API calls except those generating a task switch
  6096.       are valid in handler
  6097. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  6098. --------Q-2FDE08-----------------------------
  6099. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  6100.     AX = DE08h
  6101.     BX = mapping context of task being switched from
  6102.           (see #00416 at INT 15/AX=1016h)
  6103.     DX = handle of task being switched from
  6104. Notes:    invoked prior to task swap, interrupts, etc
  6105.     driver should pass this call to previous handler after processing it
  6106. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  6107. --------Q-2FDE09-----------------------------
  6108. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  6109.     AX = DE09h
  6110.     BX = mapping context of task being switched to
  6111.           (see #00416 at INT 15/AX=1016h)
  6112.     DX = handle of task being switched to
  6113. Notes:    state is restored except for interrupts
  6114.     driver should pass this call to previous handler before processing it
  6115. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  6116. --------Q-2FDE0A-----------------------------
  6117. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  6118.     AX = DE0Ah
  6119.     BX = mapping context of task receiving focus
  6120.     DX = handle of running task
  6121. Notes:    driver should pass this call to previous handler before processing it
  6122.     this call often occurs inside a keyboard interrupt
  6123.     DV 2.42 does not provide this call to XDI handlers running inside a
  6124.       window; instead, it directly calls the INT 2F handler which was
  6125.       active at the time DV started
  6126. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  6127. --------Q-2FDE0B-----------------------------
  6128. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  6129.     AX = DE0Bh
  6130.     BX = mapping context of DESQview system task
  6131.     CX = number of system memory paragraphs required for the use of all
  6132.           XDI drivers (DV will add this to system memory in DVP buffer)
  6133.     DX = handle of DESQview system task
  6134.     SI = mapping context of new process if it starts
  6135.     ES:DI -> DVP buffer
  6136. Return: CX incremented as needed
  6137. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  6138.     driver should pass this call to previous handler before processing it
  6139. --------Q-2FDE0C-----------------------------
  6140. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  6141.     AX = DE0Ch
  6142.     BX = mapping context of task being swapped out
  6143.           (see #00416 at INT 15/AX=1016h)
  6144.     DX = handle of DESQview system task
  6145. Note:    driver should pass this call to previous handler after processing it
  6146. --------Q-2FDE0D-----------------------------
  6147. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  6148.     AX = DE0Dh
  6149.     BX = mapping context of process just swapped in
  6150.           (see #00416 at INT 15/AX=1016h)
  6151.     DX = handle of DESQview system task
  6152. Note:    driver should pass this call to previous handler before processing it
  6153. --------Q-2FDE0E-----------------------------
  6154. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  6155.     AX = DE0Eh
  6156.     BX = mapping context of DESQview system task
  6157.     DX = handle of DESQview system task
  6158.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  6159. Note:    driver should pass this call to previous handler after processing it
  6160. --------Q-2FDE0F-----------------------------
  6161. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  6162.     AX = DE0Fh
  6163. Note:    DESQview 2.50+ calls this function just before it completes its
  6164.       initialization.  At the time of the call, DESQview has not yet
  6165.       changed any interrupt vectors
  6166. SeeAlso: AX=DE02h
  6167. --------Q-2FDE10-----------------------------
  6168. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  6169.     AX = DE10h
  6170.     BX = mapping context of process (see #00416 at INT 15/AX=1016h)
  6171.     DX = task handle of process
  6172. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  6173.       similar to AX=DE07h but allows the XDI handler to make calls which
  6174.       cause context switches
  6175. SeeAlso: AX=DE06h,AX=DE07h
  6176. --------c-2FDF00-----------------------------
  6177. INT 2F - HyperWare programs - INSTALLATION CHECK
  6178.     AX = DF00h
  6179.     BX = product code (see #03105)
  6180.     CX = 0000h
  6181.     DX = 0000h
  6182. Return: AL = status
  6183.         00h not installed
  6184.         FFh multiplex number in use
  6185.         CX = 5948h ('YH') if selected product installed
  6186.         ---HyperDisk---
  6187.         BX = code segment of resident portion
  6188.         DX = HyperDisk local data version
  6189. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6190. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6191. SeeAlso: INT 13/AX=8EEDh
  6192. Index:    installation check;HyperDisk|installation check;HyperStb
  6193. Index:    installation check;HyperKey|installation check;HyperScreen
  6194. Index:    HyperDisk;installation check|HyperStb;installation check
  6195. Index:    HyperKey;installation check|HyperScreen;installation check
  6196.  
  6197. (Table 03105)
  6198. Values for HyperWare product code:
  6199.  4248h    ('BH') HyperStb
  6200.  4448h    ('DH') HyperDisk v4.20+
  6201.  4B48h    ('KH') HyperKey
  6202.  5348h    ('SH') HyperScreen
  6203. --------Q-2FDF00BX5445-----------------------
  6204. INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
  6205.     AX = DF00h
  6206.     BX = 5445h ('TE')
  6207.     CX = 4C54h ('LT')
  6208.     DX = 5352h ('SR')
  6209. Return: BX = 5454h ('TT') if installed
  6210.     CX = 494Eh ('IN') if installed
  6211.     DX = 5454h ('ST') if installed
  6212. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  6213.       which provides an INT 14h interface to the network
  6214. Range:    AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
  6215. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
  6216. --------N-2FDF01BX0000-----------------------
  6217. INT 2F U - MSG.COM - INSTALLATION CHECK
  6218.     AX = DF01h
  6219.     BX = 0000h
  6220. Return: AX = FDFFh if installed
  6221.        BX = segment of resident code
  6222. Program: MSG.COM is a TSR for intercepting incoming Novell broadcast
  6223.       messages written by Gary Dobbins (Dobbins@Arizona.Edu)
  6224. --------c-2FDF01BX4448-----------------------
  6225. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  6226.     AX = DF01h
  6227.     BX = 4448h ('DH')
  6228. Return: AX = 0000h if function supported
  6229.         BX = number of cache buffers in use
  6230.         CX = number of cache buffers which have been modified
  6231.         DL = caching flags (see #03106)
  6232. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6233. SeeAlso: AX=DF00h,AX=DF02h
  6234.  
  6235. Bitfields for HyperDisk caching flags:
  6236. Bit(s)    Description    (Table 03106)
  6237.  0    staged writes enabled for floppy disks
  6238.  1    staged writes enabled for hard disks
  6239.  2    writes verified on floppy disks
  6240.  3    writes verified on hard disks
  6241.  4    reserved (0)
  6242.  5    reserved (0)
  6243.  6    floppy caching enabled
  6244.  7    all caching functions enabled
  6245. --------Q-2FDF01-----------------------------
  6246. INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
  6247.     AX = DF01h
  6248. Return: nothing???
  6249. Note:    invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
  6250.       to close the socket corresponding to the file handle set with
  6251.       AX=DF02h; NOP if no file handle was ever set
  6252. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  6253. --------c-2FDF02BX4448-----------------------
  6254. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  6255.     AX = DF02h
  6256.     BX = 4448h ('DH')
  6257.     DL = new caching flags (see #03106)
  6258. Return: AX = 0000h if supported
  6259.         BX = number of cache buffers in use
  6260.         CX = number of cache buffers which have been modified
  6261.         DL = previous caching flags (see #03106)
  6262. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6263. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  6264. SeeAlso: AX=DF00h,AX=DF01h
  6265. --------Q-2FDF02-----------------------------
  6266. INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
  6267.     AX = DF02h
  6268.     BX = file handle for connection's socket
  6269. Return: AX = status
  6270.         0000h successful
  6271.         FFFFh no more room in TELTSR's JFT
  6272. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  6273. Notes:    the indicated file handle becomes owned by TELTSR, and is closed in
  6274.       the caller's JFT
  6275.     multiple calls to this function will override the previous assignment
  6276.       without closing the previous file; use AX=DF01h before further calls
  6277. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  6278. --------U-2FE000-----------------------------
  6279. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  6280.     AX = E000h
  6281. Return: AX = 4A52h ("JR") if present
  6282. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  6283.       apparent DOS version analogously to MS-DOS SETVER
  6284. Notes:    this installation check differs from the usual one of returning AL=FFh
  6285.     the SETDRVER API is fully emulated by Matthias Paul's FREEVER
  6286. SeeAlso: AX=E000h/DX=4D50h,AX=E001h,INT 21/AH=52h
  6287. --------j-2FE000-----------------------------
  6288. INT 2F - KAOSHIDE - INSTALLATION CHECK
  6289.     AX = E000h
  6290. Return: AL = FFh if installed
  6291. Program: KAOSHIDE ('Hidden Kaos') is a PD joke TSR which randomly capitalizes
  6292.       alphabetic keys, written by Philip Maland. Although not a virus,
  6293.       v2.0 uses some viral-like techniques to hide itself from
  6294.       memory-reports by reducing DOS memory size.
  6295. --------U-2FE000DX4D50-----------------------
  6296. INT 2F - FREEVER v1.0+ - INSTALLATION CHECK
  6297.     AX = E000h
  6298.     DX = 4D50h ('MP')
  6299. Return: AL = FFh if installed
  6300.         AH = AMIS INT 2Dh multiplex ID
  6301.         CX = FREEVER version (CH=major, CL=minor)
  6302.         DX:DI -> AMIS-compliant signature (see #02569)
  6303.         (vendor ID is "M. Paul ", program name is "FREEVER ")
  6304. Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
  6305.       to SETVER for any DOS-compatible OS, written by Matthias Paul
  6306. Note:    FREEVER emulates INT 21/AH=30h, INT 21/AX=3306h, INT 21/AX=4412h,
  6307.       INT 21/AX=4452h, and SETDRVER's API on INT 2F/AX=E00xh, as well as
  6308.       providing an AMIS API on INT 2Dh
  6309. SeeAlso: AX=E000h"SETDRVER",INT 21/AH=30h,INT 21/AX=3306h,INT 21/AX=4452h
  6310. --------K-2FE000DX5354-----------------------
  6311. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  6312.     AX = E000h
  6313.     DX = 5354h ("ST")
  6314. Return: AL = FFh if installed
  6315.         BX = version (BH = major, BL = BCD minor)
  6316.         DX = segment of resident code
  6317. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  6318. --------U-2FE001-----------------------------
  6319. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  6320.     AX = E001h
  6321. Return: AH = major version
  6322.     AL = minor version
  6323. Note:    the SETDRVER API is fully emulated by Matthias Paul's FREEVER, which
  6324.       returns version 2.10 for this call; use AX=E000h/DX=45D0h to get
  6325.       FREEVER's version number
  6326. SeeAlso: AX=E000h,AX=E000h/DX=45D0h
  6327. --------U-2FE002-----------------------------
  6328. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  6329.     AX = E002h
  6330. Return: AL = FFh if successful
  6331.         BH = major DOS version
  6332.         BL = minor DOS version
  6333.         CH = DOS version flag
  6334.         CL = OEM number
  6335.         DH = major DR DOS version number (FFh if unknown)
  6336.         DL = minor DR DOS version number (FFh if unknown)
  6337. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  6338. --------U-2FE003-----------------------------
  6339. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  6340.     AX = E003h
  6341.     BH = new major DOS version
  6342.     BL = new minor DOS version
  6343.     CH = new DOS version flag
  6344.     CL = new DOS revision number
  6345.     DH = new OEM number
  6346. SeeAlso: AX=E002h
  6347. --------U-2FE004-----------------------------
  6348. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  6349.     AX = E004h
  6350. Return: AL = FFh if successful
  6351. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  6352. --------U-2FE005-----------------------------
  6353. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  6354.     AX = E005h
  6355. Return: AL = FFh if successful
  6356. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  6357. --------U-2FE006-----------------------------
  6358. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  6359.     AX = E006h
  6360. Return: AL = FFh if successful
  6361.         BL = status
  6362.         01h resident and active
  6363.         02h resident and inactive
  6364. --------U-2FE007-----------------------------
  6365. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  6366.     AX = E007h
  6367. Return: AL = FFh if successful
  6368.         BL = status
  6369.         00h if TaskMAX not loaded before SETDRVER
  6370.         FFh if TaskMAX was loaded before SETDRVER
  6371. SeeAlso: AX=E003h
  6372. --------U-2FE0-------------------------------
  6373. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  6374.     AH = E0h
  6375.     AL = 08h-10h
  6376. --------K-2FE100-----------------------------
  6377. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  6378.     AX = E100h
  6379. Return: AX = 0001h if installed
  6380.         DS:SI -> ASCIZ hotkey name
  6381.         DS:DI -> ASCIZ recording filename
  6382. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  6383.       by P2 Enterprises
  6384. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  6385. Index:    hotkeys;Phantom2
  6386. --------K-2FE101-----------------------------
  6387. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  6388.     AX = E101h
  6389.     BX = function mask (see #03107)
  6390.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  6391.     DS:DX -> ASCIZ filespec if BX bit 7 set
  6392. SeeAlso: AX=E100h
  6393. Index:    hotkeys;Phantom2
  6394.  
  6395. Bitfields for Phantom2 function mask:
  6396. Bit(s)    Description    (Table 03107)
  6397.  0    record
  6398.  1    play
  6399.  2    QuickPlay
  6400.  3    loop
  6401.  4    mode display toggle
  6402.  5    sound toggle
  6403.  6    set hotkey
  6404.  7    set filespec
  6405. --------K-2FE102-----------------------------
  6406. INT 2F - Phantom2 v1.1+ - UNINSTALL
  6407.     AX = E102h
  6408. Return: AX = status
  6409.         0001h removal successful
  6410.         0002h not installed as TSR
  6411.         FFFFh disabled but not removed
  6412. SeeAlso: AX=E100h
  6413. --------K-2FE103-----------------------------
  6414. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  6415.     AX = E103h
  6416. Return: AX = 0001h
  6417. SeeAlso: AX=E100h
  6418. --------y-2FE200-----------------------------
  6419. INT 2F - SecureDevice - LOGIN TO DRIVE
  6420.     AX = E200h
  6421.     DL = drive number (0 = A:)
  6422.     DS:SI -> 104-byte key
  6423. Return: AL = status
  6424.         00h unable to determine key's validity
  6425.         01h key is valid
  6426.         FFh key is invalid
  6427. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  6428.       Arthur Helwig which turns one or more disk files into encrypted
  6429.       logical drives
  6430. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  6431. --------y-2FE201-----------------------------
  6432. INT 2F - SecureDevice - GET INFORMATION
  6433.     AX = E201h
  6434.     DX = driver index (0000h = first loaded)
  6435. Return: AL = number of volumes handled by driver
  6436.     DL = drive number of first volume (00h = A:)
  6437. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  6438. --------y-2FE203-----------------------------
  6439. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  6440.     AX = E203h
  6441.     DL = drive number (00h = A:) or FFh for all drives
  6442. Return: nothing
  6443. SeeAlso: AX=E200h,AX=E209h
  6444. --------y-2FE209DX0000-----------------------
  6445. INT 2F - SecureDevice - INSTALLATION CHECK
  6446.     AX = E209h
  6447.     DX = 0000h
  6448. Return: AX = 1DEAh if installed
  6449.         DX = number of drivers installed
  6450. --------K-2FE300-----------------------------
  6451. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  6452.     AX = E300h
  6453. Return: AL = state
  6454.         00h not installed
  6455.         FEh if installed but suspended (v3.0+)
  6456.         FFh installed
  6457. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  6458. Range:    AH=C0h to AH=FFh, selected by commandline switch
  6459. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  6460. SeeAlso: AX=E307h,INT 66"Newkey"
  6461. --------V-2FE300-----------------------------
  6462. INT 2F - Blank - INSTALLATION CHECK
  6463.     AX = E300h
  6464. Return: AL = FFh if installed
  6465.         ES = resident code segment
  6466. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  6467. Note:    AH=E3h is the default, which may be reconfigured by the installation
  6468.       program in the registered version
  6469. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  6470. Index:    screen saver;Blank
  6471. --------K-2FE301-----------------------------
  6472. INT 2F U - ANARKEY.COM v2+ - GET ???
  6473.     AX = E301h
  6474. Return: DX:BX -> ??? (see #03108,#03109)
  6475. SeeAlso: AX=E300h
  6476.  
  6477. Format of returned data structure for ANARKEY v2.0:
  6478. Offset    Size    Description    (Table 03108)
  6479.  -7   7 BYTEs    signature ('ANARKEY')
  6480.  00h    WORD    ??? (I see 0001h in v2.0)
  6481.  02h    WORD    ??? (I see 0001h in v2.0)
  6482.  04h    WORD    ??? (I see 0 in v2.0)
  6483.  06h    WORD    PSP segment of next program loaded
  6484.  
  6485. Format of returned data structure for ANARKEY v3+:
  6486. Offset    Size    Description    (Table 03109)
  6487.  -1    BYTE    multiplex number
  6488.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  6489.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  6490.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  6491.  05h    WORD    PSP segment of next program loaded
  6492. --------K-2FE302-----------------------------
  6493. INT 2F U - ANARKEY.COM v3+ - ???
  6494.     AX = E302h
  6495.     BL = ???
  6496. Return: ???
  6497. SeeAlso: AX=E300h
  6498. --------K-2FE303-----------------------------
  6499. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  6500.     AX = E303h
  6501.     BL = function
  6502.         01h toggle insert mode
  6503.         02h display contents of history buffer
  6504.         03h write history buffer to file
  6505.         ES:DX -> file name
  6506.         04h clear history buffer
  6507.         05h undefine all aliases
  6508.         06h show aliases
  6509.         07h list programs using Unix switchar
  6510.         08h jump to bottom of history buffer
  6511.         09h (v4.0) add string to history buffer
  6512.         ES:DX -> ASCIZ string
  6513.         0Ah (v4.0) ???
  6514.         ES:DX -> ???
  6515.         0Bh (v4.0) copy string to edit buffer for use as next input line
  6516.         ES:DX -> ASCIZ string
  6517.         0Ch (v4.0) ???
  6518.         0Dh (v4.0) copy ??? to ???
  6519.         0Eh (v4.0) ???
  6520.         0Fh (v4.0) ???
  6521.         10h (v4.0) set ??? flag
  6522.         11h (v4.0) display error message about running in EMS under Windows
  6523. Return: ???
  6524. SeeAlso: AX=E300h
  6525. --------K-2FE304-----------------------------
  6526. INT 2F U - ANARKEY.COM v2+ - ???
  6527.     AX = E304h
  6528.     BL = ???
  6529. Return: ???
  6530. SeeAlso: AX=E300h
  6531. --------K-2FE305-----------------------------
  6532. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  6533.     AX = E305h
  6534.     BL = new state
  6535.         01h suspended
  6536.         00h enabled
  6537. SeeAlso: AX=E300h
  6538. --------K-2FE306-----------------------------
  6539. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6540.     AX = E306h
  6541. Return: AX = ???
  6542. SeeAlso: AX=E300h
  6543. --------K-2FE307-----------------------------
  6544. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6545.     AX = E307h
  6546. Return: AX = ???
  6547.     BL = ???
  6548. SeeAlso: AX=E300h
  6549. --------K-2FE337-----------------------------
  6550. INT 2F - INT16.COM - INSTALLATION CHECK
  6551.     AX = E337h
  6552. Return: AX = 0013h if installed
  6553. Program: INT16.COM is an INT16 keyboard BIOS replacement for
  6554.       INT 16/AH=00h-02h,10h-12h (based on K3) written by Martin Gerdes
  6555.       and published in c't 05/1990.
  6556. SeeAlso: AX=ED58h
  6557. --------l-2FE44D-----------------------------
  6558. INT 2F - NDOS - API
  6559.     AX = E44Dh
  6560. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  6561.       Norton Utilities
  6562. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  6563.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  6564.       check returns AX=44EEh instead of AX=44DDh
  6565. SeeAlso: AX=D44Dh,AX=E44Eh
  6566. --------l-2FE44E-----------------------------
  6567. INT 2F C - NDOS - AWAITING USER INPUT
  6568.     AX = E44Eh
  6569.     BX = condition
  6570.         0000h NDOS is ready to display prompt
  6571.         0001h NDOS has displayed the prompt, about to accept user input
  6572. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  6573. SeeAlso: AX=E44Dh
  6574. --------K-2FE44FBX0000-----------------------
  6575. INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  6576.     AX = E44Fh
  6577.     BX = 0000h
  6578. Return: AX = 44EEh if installed
  6579. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  6580.       Norton Utilities
  6581. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  6582.       which emulate the 4DOS and NDOS keystack
  6583. SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
  6584. --------K-2FE44FBX0001-----------------------
  6585. INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  6586.     AX = E44Fh
  6587.     BX = 0001h
  6588.     CX = number of keystrokes (01h-FFh)
  6589.     DS:DX -> keystroke list (one word per keystroke)
  6590. Return: AX = status
  6591.         0000h successful
  6592.         nonzero failed
  6593.     BX,CX,DX destroyed
  6594. Notes:    the keystrokes are the exact values to return from subsequent calls to
  6595.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  6596.         0000h causes subfunctions 01h and 11h to indicate an empty
  6597.               keyboard buffer
  6598.         FFFFh is followed by a word indicating the number of clock
  6599.               ticks to delay before the next faked keystroke
  6600.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  6601.       invocation, and does not range-check CX; it will overwrite memory
  6602.       following the resident portion if CX is greater than 100h.
  6603.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  6604.       which emulate the 4DOS and NDOS keystack
  6605. SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
  6606. --------U-2FE600CL30-------------------------
  6607. INT 2F - Virtual 486 - INSTALLATION CHECK
  6608.     AX = E600h
  6609.     CL = 30h
  6610.     BX = C0DEh
  6611. Return: BX = DEC0h if installed
  6612. Program: Virtual 486 is a 80486 CPU emulator for an 80386 by Solar Designer
  6613. ----------2FE700BX4158-----------------------
  6614. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  6615.     AX = E700h
  6616.     BX = 4158h ("AX")
  6617.     CX = 4953h ("IS")
  6618.     DX = 4845h ("HE")
  6619. Return: AL = FFh if installed
  6620.         BX = 4C4Fh ("LO") if ??? installed
  6621.         CX = 4F4Bh ("OK")
  6622.         DX = 4F55h ("OU")
  6623.         ES:DI -> ???
  6624. Range:    AH=C0h to AH=FFh, selected by scanning AH=E7-FFh, then AH=C0h-E6h
  6625. Note:    called by QDPMI when its Real to Protected Mode Switch Entry Point
  6626.       is called
  6627. --------f-2FE77EBX0000-----------------------
  6628. INT 2F - CTDEMN - INSTALLATION CHECK
  6629.     AX = E77Eh
  6630.     BX = 0000h
  6631.     CX = 4F4Dh ('OM')
  6632.     DX = 5453h ('TS')
  6633. Return: AX = 7EE7h if installed
  6634.         BX = resident code segment
  6635.         CX = 6F6Dh ('om')
  6636.         DX = 7473h ('ts')
  6637. Program: CTDEMN is a file daemon TSR by Simultan AG
  6638. --------E-2FED00-----------------------------
  6639. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  6640.     AX = ED00h
  6641.     BL = DOS extender ID (see #03110)
  6642. Return: AL = status
  6643.         00h not installed
  6644.         FFh installed
  6645.         SI = 5048h ("PH")
  6646.         DI = 4152h ("AR")
  6647.         CH = major version number
  6648.         CL = minor version number
  6649.         DX = flags
  6650.             bit 0: running under DPMI
  6651.             bit 1: running under Phar Lap VMM
  6652.         if running under DPMI:
  6653.             BX = DPMI version (BH = major, BL = minor)
  6654. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  6655.  
  6656. (Table 03110)
  6657. Values for Phar Lap DOS extender ID:
  6658.  01h    286dosx v1.3+ (Software Development Kit)
  6659.  02h    286dosx v1.3+ (Run-Time Kit)
  6660.  03h    386dosx v4.0+ (SDK)
  6661.  04h    386dosx v4.0+ (RTK)
  6662. --------E-2FED03-----------------------------
  6663. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  6664.     AX = ED03h
  6665.     CX = real-mode code segment
  6666.     DX = real-mode data segment
  6667. Return: CF clear if successful
  6668.         CX = protected-mode code segment selector
  6669.         DX = protected-mode data segment selector
  6670.         ES:DI -> real-mode entry point for calling protected-mode functions
  6671.               (see INT 21/AX=250Dh)
  6672.     CF set on error
  6673.         AX = error code
  6674.         0008h unable to allocate LDT descriptors
  6675. --------E-2FED10BL05-------------------------
  6676. INT 2F - Pharlap DOS Extender - ???
  6677.     AX = ED10h
  6678.     BL = 05h
  6679.     ES:SI -> ??? structure
  6680. Return: AX = ???
  6681.     SI = ???
  6682.     DI = ???
  6683. SeeAlso: AX=ED00h,AX=ED11h
  6684. --------E-2FED11BL05-------------------------
  6685. INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
  6686.     AX = ED11h
  6687.     BL = 05h
  6688.     CX = ???
  6689.     DX = ???
  6690.     ES:SI -> ??? structure
  6691.     SS:SP = new stack ???
  6692. Return: ???
  6693. Note:    called immediately prior to terminating program with INT 21/AX=4CFFh
  6694. SeeAlso: AX=ED00h,AX=ED10h
  6695. --------K-2FED58-----------------------------
  6696. INT 2F U - K5.COM - INSTALLATION CHECK
  6697.     AX = ED58h
  6698. Return: AX = 000Dh if installed
  6699.         ES = resident code segment
  6700.         BX = ??? (9999h)
  6701.         ???
  6702. Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
  6703. SeeAlso: AX=E337h,INT 16/AX=AF20h
  6704. --------E-2FED80-----------------------------
  6705. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  6706.     AX = ED80h
  6707.     BL = DOS extender ID (see #03110)
  6708.     SI = 5048h ("PH")
  6709.     DI = 4152h ("AR")
  6710.     ???
  6711. Return: ???
  6712. --------O-2FEDC8BX0000-----------------------
  6713. INT 2F - Novell ??? - INSTALLATION CHECK???
  6714.     AX = EDC8h ('EDC' = Novell European Development Center)
  6715.     BX = 0000h
  6716.     CX = 0000h
  6717.     DX = 1234h
  6718. Return: ???
  6719. Desc:    called by Novell DOS 7 LOCK command during installation; purpose
  6720.       unknown
  6721. --------y-2FEE00-----------------------------
  6722. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  6723.     AX = EE00h
  6724. Return: AL = FFh if installed
  6725. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  6726. SeeAlso: INT 21/AH=40h"NB.SYS"
  6727. --------U-2FEE00-----------------------------
  6728. INT 2F - XVIEW - INSTALLATION CHECK
  6729.     AX = EE00h
  6730. Return: AX = 00FFh if installed
  6731. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  6732. --------N-2FEE00-----------------------------
  6733. INT 2F - WEB v4.02 - INSTALLATION CHECK
  6734.     AX = EE00h
  6735. Return: AL = status
  6736.         00h not installed
  6737.         FFh installed
  6738. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6739. SeeAlso: AH=EEh"WEB",AX=EEF0h
  6740. --------U-2FEE01-----------------------------
  6741. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  6742.     AX = EE01h
  6743.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  6744. Return: AX = status (see #03111)
  6745. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  6746.       database; the current database is searched first
  6747. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  6748.  
  6749. (Table 03111)
  6750. Values for XVIEW function status:
  6751.  0000h    successful
  6752.  00F1h    unknown subfunction
  6753.  00F2h    unable to pop up
  6754. --------U-2FEE02-----------------------------
  6755. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  6756.     AX = EE02h
  6757.     DX = physical page number or anchor page number (see #03112)
  6758. Return: AX = status (see #03111)
  6759. Note:    physical page numbers are assigned by the hypertext compiler, and
  6760.       will change if a page is inserted in the middle
  6761. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  6762.  
  6763. (Table 03112)
  6764. Values for XVIEW anchor page number:
  6765.  FFEAh    _Credits
  6766.  FFECh    _SearchTopics
  6767.  FFEDh    _SearchText
  6768.  FFF0h    _ManualList
  6769.  FFF5h    _HelpOnHelp
  6770.  FFF8h    _HomePage
  6771.  FFF9h    _IndexPage
  6772. --------U-2FEE03-----------------------------
  6773. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  6774.     AX = EE03h
  6775.     DS:DX -> data packet (see #03113)
  6776. Return: AX = status (see #03111)
  6777. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  6778.  
  6779. Format of XVIEW data packet:
  6780. Offset    Size    Description    (Table 03113)
  6781.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  6782.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  6783.  08h    WORD    page number (0000h if keyword used)
  6784.  0Ah  6 BYTEs    reserved
  6785. --------U-2FEE04-----------------------------
  6786. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  6787.     AX = EE04h
  6788. Return: AX = status (see #03111)
  6789. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  6790. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  6791. --------U-2FEE05-----------------------------
  6792. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  6793.     AX = EE05h
  6794. Return: AX = status (see #03111)
  6795. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  6796. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  6797. --------U-2FEE06-----------------------------
  6798. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  6799.     AX = EE06h
  6800. Return: AX = status (see also AX=EE01h)
  6801.         0001h specified filename is not an xText database
  6802.         0002h no databases found
  6803.         0003h bad data in file
  6804.         0004h memory shortage
  6805.         0005h unable to open the requested file
  6806.         0007h invalid page number for file
  6807. Note:    although this call is not required, the exit code can alert the
  6808.       caller to problems; if the call is not made, the program should
  6809.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  6810.       and should not get keyboard input or attempt disk accesses during
  6811.       the delay
  6812. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  6813. --------N-2FEE-------------------------------
  6814. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  6815.     AH = EEh
  6816.     AL = module ID (see #03114)
  6817. Return: AX = 0000h if installed
  6818.         ES:DI -> far entry point for module-specific API calls
  6819.           (see #03115,#03116,#03117,#03118,#03119)
  6820. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6821. SeeAlso: AX=EE00h"WEB"
  6822.  
  6823. (Table 03114)
  6824. Values for WEB module ID:
  6825.  10h    server module (SERVER.EXE)
  6826.  20h    client module (CLIENT.EXE)
  6827.  30h    mail module (MAIL.EXE)
  6828.  40h    spooler (PCSPOOL.EXE)
  6829.  50h    kernel module (KERNEL.EXE)
  6830.  60h    SAP module (KERNEL.EXE)
  6831.  70h    resident station manager (SM.EXE)
  6832.  90h    router module (ROUTER.EXE)
  6833.  
  6834. (Table 03115)
  6835. Call server module entry point with:
  6836.     BX = function
  6837.         0000h remove server module
  6838.         Return: AX = status (0000h if successful, else WEB error code)
  6839.         0001h create SYSINFO file
  6840.         Note:    the SYSINFO file is used by the station manager when
  6841.               displaying info for a particular station
  6842.         0002h get server object table
  6843.         Return: CX = number of server objects
  6844.             ES:DI -> server object table
  6845.         Note:    server objects include drives and devices that the
  6846.               server module controls
  6847.         0003h get server variables
  6848.         Return: ES:DI -> server variables
  6849.  
  6850. (Table 03116)
  6851. Call client module entry point with:
  6852.     BX = function
  6853.         0000h remove client module
  6854.         Return: AX = status (0000h if successful, else WEB error code)
  6855.         0001h decrement client-only flag
  6856.         0002h increment client-only flag
  6857.         0005h set device capture
  6858.         Note:    decrements DeviceOutput flag, telling the spooler that
  6859.               it may trap device output again
  6860.         0006h clear device capture
  6861.         Note:    increments DeviceOutput flag, telling the spooler that
  6862.               it should not trap device output (this is used
  6863.               internally by the spooler to prevent it from trapping
  6864.               its own output)
  6865.         0007h get client debug pointer
  6866.         Return: ES:DI -> client debug data structure (see #03120)
  6867.         0008h get root drive
  6868.         Return: AL = WEB startup drive
  6869.         0009h get maximum possible drive/device redirections
  6870.         Return: AL = maximum drive redirections
  6871.             CH = maximum LPTx redirections
  6872.             CL = maximum COMx redirections
  6873.         000Ah suspend client
  6874.         Return: AX = previous value of Suspend flag
  6875.         000Bh resume client
  6876.         Return: AX = previous value of Suspend flag
  6877.         000Ch get instance data
  6878.         CX = maximum number of structures in array
  6879.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  6880.               (see #03121)
  6881.         Return: CX = number of structures actually returned
  6882.         Note:    used internally by WEB4WIN
  6883.  
  6884. (Table 03117)
  6885. Call mail module entry point with:
  6886.     BX = function
  6887.         0000h remove mail module
  6888.         Return: AX = status (0000h successful, else WEB error code)
  6889.         0001h set mail poll
  6890.         Note:    schedules the WEB mail module
  6891.         0002h set mail notify
  6892.         Note:    sets the Notify flag, which determines whether the
  6893.               user will be notified when mail is received
  6894.         0003h clear mail notify
  6895.         Note:    clears the Notify flag, which determines whether the
  6896.               user will be notified when mail is received
  6897.         0004h check whether new mail has arrived
  6898.         Return: AL = new mail status
  6899.                 00h no new mail since last call
  6900.                 else new mail has arrived
  6901.         Note:    also clears the new-mail flag after retrieving it
  6902.         0005h send notify
  6903.         ES:DI -> name of WEB user to be notified
  6904.         0006h get post office
  6905.         Return: ES:DI -> full network path of Post Office subdirectory
  6906.  
  6907. (Table 03118)
  6908. Call spooler entry point with:
  6909.     BX = function
  6910.         0000h remove PCSpool module
  6911.         Return: AX = status (0000h successful, else WEB error code)
  6912.         0001h set spooler poll
  6913.         Note:    schedules the WEB spooler
  6914.         0002h check spooler changed
  6915.         Return:    AX = 0000h
  6916.         Note:    this call is a NOP in current versions of WEB
  6917.  
  6918. (Table 03119)
  6919. Call kernel entry point with:
  6920.     BX = function
  6921.         0000h remove kernel module
  6922.         Return: AX = status (0000h successful, else WEB error code)
  6923.         0001h set kernel ^S filter
  6924.         DL = new state (00h don't filter ^S, nonzero do filter)
  6925.         0002h get kernel data area
  6926.         Return: ES:DI -> kernel data area
  6927.         0003h display dialog box
  6928.         CL = dialog box type
  6929.             00h password
  6930.             01h E-Note received notification
  6931.             02h Novell login
  6932.             03h general notification
  6933.         DL = number of rows to display
  6934.         ES:SI -> array of far pointers to rows to be displayed
  6935.         ES:DI -> Pascal-style input buffer
  6936.         Return: AX = status (0000h successful, else error code)
  6937.         0004h kernel service events
  6938.         0005h get kernel's in-critical-section flag
  6939.         Return: ES:DI -> kernel InCriticalSection flag
  6940.         0006h schedule DOS event
  6941.         AL = directive
  6942.             00h do not ignore WEB ExtraBusy flag
  6943.             01h ignore ExtraBusy flag
  6944.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6945.         ES:SI -> WEB AES Event Control Block (ECB) (see #03122)
  6946.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  6947.               one used by IPX; this call schedules a special ECB
  6948.               to be executed at a later time.  Unlike IPX ECBs,
  6949.               the timeout must be set explicitly by the caller
  6950.             this function also calls function 0004h
  6951.         0007h check busy
  6952.         AL = directive
  6953.             00h do not ignore WEB ExtraBusy flag
  6954.             01h ignore ExtraBusy flag
  6955.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6956.         Return: AX = status (0000h not busy, else busy)
  6957.         0008h set keyboard intercept
  6958.         Note:    currently a NOP which returns immediately
  6959.         0009h get keyboard intercept
  6960.         Note:    currently a NOP which returns immediately
  6961.         000Ah get dialog flags
  6962.         Return: ES:DI -> kernel dialog flags (see #03123)
  6963.         000Bh get network path
  6964.         Return: ES:DI -> fully-qualified network path of file where
  6965.                 the screen is stored on Dialog calls
  6966.         000Ch kernel alternate dialog
  6967.         CL = dialog box type
  6968.             00h password
  6969.             01h E-Note received notification
  6970.             02h Novell login
  6971.             03h general notification
  6972.         DL = number of rows to display
  6973.         ES:SI -> array of far pointers to rows to be displayed
  6974.         ES:DI -> Pascal-style input buffer
  6975.         Return: AX = status (0000h successful, else error code)
  6976.         Note:    this function is identical to function 0003h except
  6977.               that it does not notify WEB4WIN of the impending
  6978.               dialog request
  6979.         000Dh get machine/operating system type
  6980.         Return: AX = machine/operating system type
  6981.                 01h IBM PC, MS-DOS
  6982.                 02h IBM PC, DOSV (Japanese)
  6983.                 03h NEC PC-9800, JDOS (Japanese)
  6984.                 04h IBM PC, Korean DBC DOS
  6985.  
  6986. Format of client debug data structure:
  6987. Offset    Size    Description    (Table 03120)
  6988.  00h    WORD    total files
  6989.  02h    WORD    files free
  6990.  04h    WORD    no files
  6991.  06h    WORD    minimum files
  6992.  08h    WORD    total FCBs
  6993.  0Ah    WORD    total safe FCBs
  6994.  0Ch    WORD    FCBs in use
  6995.  0Eh    WORD    wrong FCB
  6996.  10h    WORD    compressed
  6997.  12h    WORD    retransmits
  6998.  
  6999. Format of WIN_INSTANCE_DATA structure:
  7000. Offset    Size    Description    (Table 03121)
  7001.  00h    DWORD    real-mode pointer to data to be instanced
  7002.  04h    WORD    size of data to be instanced
  7003.  
  7004. Format of WEB AES Event Control Block:
  7005. Offset    Size    Description    (Table 03122)
  7006.  00h    DWORD    link address
  7007.  04h    WORD    ESR address
  7008.  08h    BYTE    InUse flag
  7009.  09h    BYTE    completion code
  7010.  0Ah  3 BYTEs    reserved
  7011.  0Dh    WORD    timeout
  7012.  0Fh    BYTE    IgnoreExtra flag
  7013.  10h    WORD    PSP
  7014.  12h    DWORD    DTA
  7015.  16h    WORD    AX value for DOS critical information
  7016.  18h    WORD    BX value for DOS critical information
  7017.  1Ah    WORD    CX value for DOS critical information
  7018.  1Ch    WORD    DX value for DOS critical information
  7019.  
  7020. (Table 03123)
  7021. Values for kernel dialog flags:
  7022.  01h    dialog will timeout
  7023.  02h    display stars instead of entered keystrokes
  7024. --------N-2FEEF0-----------------------------
  7025. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  7026.     AX = EEF0h
  7027.     BX = notification function ID (see #03124)
  7028. Return: varies by notification function
  7029. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  7030. Note:    the notification functions are used internally by WEB modules to notify
  7031.       other modules and external programs of actions or event, and should
  7032.       never be called by an application
  7033. SeeAlso: AX=EE00h"WEB"
  7034.  
  7035. (Table 03124)
  7036. Values for WEB Notification Function ID:
  7037.  00h    node added
  7038.  01h    node deleted
  7039.  02h    dial attempt
  7040.  03h    dial failed
  7041.  04h    file close
  7042.  05h    close connection
  7043.  07h    check Windows mode
  7044.  20h    link up
  7045.  21h    link down
  7046. --------K-2FF000-----------------------------
  7047. INT 2F U - 4MAP - INSTALLATION CHECK
  7048.     AX = F000h
  7049. Return: AX = 00FFh
  7050. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  7051. Note:    returns AX=00FFh for any value of AL not listed here
  7052. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  7053. --------K-2FF001-----------------------------
  7054. INT 2F U - 4MAP - GET KEY MAPPINGS
  7055.     AX = F001h
  7056. Return: ES:BX -> key mappings
  7057. SeeAlso: AX=F000h
  7058. --------K-2FF002-----------------------------
  7059. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  7060.     AX = F002h
  7061.     BL = character to insert
  7062. Return: AX = status
  7063.         0000h successful
  7064.         0001h buffer full
  7065. SeeAlso: AX=F000h,AX=F003h
  7066. --------K-2FF003-----------------------------
  7067. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  7068.     AX = F003h
  7069.     BL = character to insert
  7070. Return: AX = status
  7071.         0000h successful
  7072.         0001h buffer full
  7073. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  7074. SeeAlso: AX=F000h,AX=F002h
  7075. --------m-2FF1-------------------------------
  7076. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  7077.     AH = F1h
  7078.     AL <> F1h
  7079. Return: AL = F1h if installed
  7080. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  7081.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  7082.       TSR at a time is brought back into memory at the user's request.
  7083. --------E-2FF100-----------------------------
  7084. INT 2F - DOS EXTENDER INSTALLATION CHECK
  7085.     AX = F100h
  7086. Return: AL = FFh if DOS extender present
  7087.         SI = 444Fh ("DO")
  7088.         DI = 5358h ("SX")
  7089. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  7090. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  7091. --------W-2FF200-----------------------------
  7092. INT 2F - WINX - INSTALLATION CHECK
  7093.     AX = F200h
  7094. Return: AX = 00FFh if installed
  7095. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  7096.       launch Windows applications from a DOS Box; it was published in
  7097.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  7098.       (Addison-Wesley) and should not be confused with the Windows driver
  7099.       of the same name which is part of the DESQview/X package
  7100. --------W-2FF201-----------------------------
  7101. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  7102.     AX = F201h
  7103. Return: AX = status
  7104.         FFFFh if WINX is busy processing a different request
  7105.         0000h if successful
  7106.         BX:CX = address of server buffer (see #03125)
  7107.  
  7108. Format of WINX server buffer:
  7109. Offset    Size    Description    (Table 03125)
  7110.  00h    BYTE    command/status
  7111.         00h buffer available
  7112.         01h buffer contains result
  7113.         02h change directory
  7114.         03h execute program
  7115.         FFh terminate windows portion of WINX
  7116.  01h  ? BYTEs    command (03h) or directory (02h)
  7117.   or
  7118.  01h    DWORD    result (01h)
  7119. --------W-2FF202-----------------------------
  7120. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  7121.     AX = F202h
  7122.     BX:CX -> directory
  7123. Return: AX = status
  7124.         FFFFh if WINX is busy processing a different request
  7125.         0000h if successful
  7126. SeeAlso: AX=F200h,AX=F203h
  7127. --------W-2FF203-----------------------------
  7128. INT 2F - WINX - EXECUTE COMMAND
  7129.     AX = F203h
  7130.     BX:CX -> command
  7131. Return: AX = status
  7132.         0000h if successful
  7133.         FFFFh if WINX is busy processing a different request
  7134. SeeAlso: AX=F200h,AX=F202h
  7135. --------G-2FF400-----------------------------
  7136. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  7137.     AX = F400h
  7138. Return: AL = 01h if installed
  7139. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  7140.       of PC Magazine; when run as a TSR it can determine which IRQs are
  7141.       used only when a device is active
  7142. SeeAlso: AX=F401h
  7143. --------N-2FF400-----------------------------
  7144. INT 2F - PowerLAN - INSTALLATION CHECK???
  7145.     AX = F400h
  7146.     ???
  7147. Return: ???
  7148. Note:    this function is called by PowerLAN's NET.EXE just prior to calling
  7149.       AX=F401h (get version)
  7150. SeeAlso: AX=F401h"PowerLAN"
  7151. --------N-2FF401-----------------------------
  7152. INT 2F - PowerLAN - GET VERSION
  7153.     AX = F401h
  7154. Return: ES:BX -> WORD containing 100*version (in decimal)
  7155. Program: PowerLAN is a networking product by Performance Technology
  7156. SeeAlso: AX=F400h"PowerLAN",AX=F483h"PowerLAN"
  7157. --------G-2FF401CX5121-----------------------
  7158. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  7159.     AX = F401h
  7160.     CX = 5121h ('Q!')
  7161. Return: AX:DX -> hooked interrupt table (see #03126)
  7162. SeeAlso: AX=F400h
  7163.  
  7164. Format of FINDIRQ hooked interrupt table:
  7165. Offset    Size    Description    (Table 03126)
  7166.  00h    BYTE    1Ch
  7167.  01h    DWORD    FINDIRQ's INT 1C handler
  7168.  05h    DWORD    original INT 1C handler
  7169.  09h    BYTE    28h
  7170.  0Ah    DWORD    FINDIRQ's INT 28 handler
  7171.  0Eh    DWORD    original INT 28 handler
  7172.  12h    BYTE    2Fh
  7173.  13h    DWORD    FINDIRQ's INT 2F handler
  7174.  17h    DWORD    original INT 2F handler
  7175. --------N-2FF483-----------------------------
  7176. INT 2F - PowerLAN - ???
  7177.     AX = F483h
  7178.     ???
  7179. Return: ???
  7180. SeeAlso: AX=F400h"PowerLAN",AX=F401h"PowerLAN"
  7181. --------d-2FF700-----------------------------
  7182. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  7183.     AX = F700h
  7184. Return: AL = state
  7185.         00h not installed
  7186.         FFh installed
  7187. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  7188. --------d-2FF701-----------------------------
  7189. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  7190.     AX = F701h
  7191.     BX:CX = 32-bit count of 55ms timer ticks
  7192. --------d-2FF800CX4455-----------------------
  7193. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  7194.     AX = F800h
  7195.     CX = 4455h ("DU")
  7196.     DL = 45h ("E")
  7197. Return: AL = FFh if installed
  7198.         ES:BX -> ASCII signature "Universal Data Exchange"
  7199. Program: SuperStor is a disk-compression program by Addstor.
  7200. Note:    returns AX=0001h if AL is not 00h or 01h
  7201. SeeAlso: AX=1001h,AX=F801h
  7202. --------d-2FF801CX4455-----------------------
  7203. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  7204.     AX = F801h
  7205.     CX = 4455h ("DU")
  7206.     DL = 45h ("E")
  7207.     ES:BX = return address if successful
  7208. Return: at specified address if successfully removed from memory
  7209.     else
  7210.         AL = error code
  7211.         ???
  7212. Program: SuperStor is a disk-compression program by Addstor.
  7213. Note:    returns AX=0001h if AL is not 00h or 01h
  7214. SeeAlso: AX=1001h,AX=F800h
  7215. ----------2FFA00-----------------------------
  7216. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  7217.     AX = FA00h
  7218.     BX = ??? (0408h)
  7219.     CX = ??? (001Fh)
  7220.     DX = ??? (0102h)
  7221.     SI = ??? (5ACCh)
  7222.     DI = ??? (0632h)
  7223. Return: ???
  7224. Note:    called by WinEmacs at startup
  7225. ----------2FFA00-----------------------------
  7226. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  7227.     AX = FA00h
  7228.     BX = ??? (03FCh)
  7229.     CX = ??? (003Fh)
  7230.     DX = ??? (00FFh)
  7231.     SI = ??? (5AA6h)
  7232.     DI = ??? (0620h)
  7233. Return: ???
  7234. Note:    called by Matlab at startup
  7235. --------*-2FFB-------------------------------
  7236. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  7237.     AH = FBh
  7238. SeeAlso: AX=FB42h/BX=0001h
  7239. --------f-2FFB-------------------------------
  7240. INT 2F U - Conner Backup Exec AUTORES - API
  7241.     AH = FBh
  7242.     BL = function number (00h-07h)
  7243.     ???
  7244. Return: ???
  7245. Program: AUTORES is a resident program launcher for unattended backups
  7246. --------a-2FFB00-----------------------------
  7247. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  7248.     AX = FB00h
  7249. Return: AX = 00FFh if installed
  7250. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7251. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  7252. --------U-2FFB00-----------------------------
  7253. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  7254.     AX = FB00h
  7255. Return: AX = FFFFh if installed
  7256.         BX = version (BCD, BH=major, BL=minor)
  7257. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  7258. --------a-2FFB01-----------------------------
  7259. INT 2F U - AutoBraille v1.1A - ???
  7260.     AX = FB01h
  7261.     ???
  7262. Return: ???
  7263. --------U-2FFB01-----------------------------
  7264. INT 2F U - Jot-It! v1.50 - GET USER NAME
  7265.     AX = FB01h
  7266. Return: DX:BX -> ASCIZ user name
  7267. SeeAlso: AX=FB02h"Jot-It"
  7268. --------a-2FFB02-----------------------------
  7269. INT 2F U - AutoBraille v1.1A - ???
  7270.     AX = FB02h
  7271. Return: AH = ???
  7272.     AL = ???
  7273. --------U-2FFB02-----------------------------
  7274. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  7275.     AX = FB02h
  7276. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  7277. SeeAlso: AX=FB01h"Jot-It"
  7278. --------a-2FFB03-----------------------------
  7279. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  7280.     AX = FB03h
  7281. Return: AX = ???
  7282. --------U-2FFB03-----------------------------
  7283. INT 2F U - Jot-It! v1.50 - UNINSTALL
  7284.     AX = FB03h
  7285. Return: resident code removed from memory
  7286. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  7287.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  7288. SeeAlso: AX=FB00h"Jot-It"
  7289. --------a-2FFB-------------------------------
  7290. INT 2F U - AutoBraille v1.1A - SET ???
  7291.     AH = FBh
  7292.     AL = 04h-08h
  7293. Return: AX = 0000h
  7294. --------a-2FFB-------------------------------
  7295. INT 2F U - AutoBraille v1.1A - SET ???
  7296.     AH = FBh
  7297.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  7298. Return: ???
  7299. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7300. --------a-2FFB-------------------------------
  7301. INT 2F U - AutoBraille v1.1A - SET ???
  7302.     AH = FBh
  7303.     AL = 10h-1Fh
  7304.     ???
  7305. Return: ???
  7306. --------a-2FFB20-----------------------------
  7307. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  7308.     AX = FB20h
  7309.     BL = flags to set
  7310. SeeAlso: AX=FB21h"AutoBraille"
  7311. --------a-2FFB21-----------------------------
  7312. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  7313.     AX = FB21h
  7314.     BL = flags to clear
  7315. SeeAlso: AX=FB20h"AutoBraille"
  7316. --------a-2FFB22-----------------------------
  7317. INT 2F U - AutoBraille v1.1A - SET ???
  7318.     AX = FB22h
  7319.     BL = ???
  7320. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7321. --------a-2FFB28-----------------------------
  7322. INT 2F U - AutoBraille v1.1A - ???
  7323.     AX = FB28h
  7324.     BX = ???
  7325.     ???
  7326. Return: ???
  7327. SeeAlso: AX=FB29h"AutoBraille"
  7328. --------a-2FFB29-----------------------------
  7329. INT 2F U - AutoBraille v1.1A - ???
  7330.     AX = FB29h
  7331.     BX = ???
  7332.     ???
  7333. Return: ???
  7334. SeeAlso: AX=FB28h"AutoBraille"
  7335. --------a-2FFB-------------------------------
  7336. INT 2F U - AutoBraille v1.1A - SET ???
  7337.     AH = FBh
  7338.     AL = 2Bh-34h
  7339.     BX = ???
  7340. --------a-2FFB35-----------------------------
  7341. INT 2F U - AutoBraille v1.1A - SET ???
  7342.     AX = FB35h
  7343.     BL = ???
  7344. --------a-2FFB36-----------------------------
  7345. INT 2F U - AutoBraille v1.1A - SET ???
  7346.     AX = FB36h
  7347.     BL = ???
  7348. --------a-2FFB37-----------------------------
  7349. INT 2F U - AutoBraille v1.1A - SET ???
  7350.     AX = FB37h
  7351.     BL = ???
  7352. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7353. --------E-2FFB42BX0001-----------------------
  7354. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  7355.     AX = FB42h
  7356.     BX = 0001h
  7357. Return: AX = version number??? (AL=major, AH=minor)
  7358.     CX = next-selector increment
  7359. ---BC2.0---
  7360.     ES:BX -> 80-byte buffer for ???
  7361.     DX = DPMI version
  7362. ---BC3.0---
  7363.     BX = ??? (0000h)
  7364.     DX = ???
  7365.     ES:SI -> list of valid selectors ???
  7366. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7367.       as version 1.000, while the version distributed with BC++ 3.0
  7368.       identifies itself as version 1.0; the former is 10864 bytes, the
  7369.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  7370.       the BC3.0 version also adds a DPMI host and DOS extender
  7371.     the BC++ 2.0 version displays an error message if called with BX
  7372.       values other than 0001h-0008h
  7373. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  7374. --------E-2FFB42BX0002-----------------------
  7375. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  7376.     AX = FB42h
  7377.     BX = 0002h
  7378.     CX = size in bytes
  7379.     DX = bit flags
  7380.         bit 2: set to allocate DOS memory, clear for DPMI memory
  7381.     SI = selector of descriptor to be modified to access allocated memory
  7382.     DI = selector of a second descriptor to be modified
  7383. Return: AX = ??? or 0000h on error
  7384.     CX:DX = linear base address of DPMI memory block
  7385.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  7386.     ???
  7387. Note:    two segment descriptors may be set if a code and an aliased data
  7388.       segment are required; if only one descriptor is needed, SI should
  7389.       equal DI on entry
  7390. BUG:    when allocating DOS memory, the code computes the linear address by
  7391.       multiplying the segment number by 4 rather than shifting by 4
  7392. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  7393. --------E-2FFB42BX0002-----------------------
  7394. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  7395.     AX = FB42h
  7396.     BX = 0002h
  7397.     ES:SI -> memory block info (see #03127)
  7398. Return: ???
  7399. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7400.       as version 1.000, while the version distributed with BC++ 3.0
  7401.       identifies itself as version 1.0; the former is 10864 bytes, the
  7402.       latter 22180 bytes.
  7403. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  7404.  
  7405. Format of DPMILOAD memory block info:
  7406. Offset    Size    Description    (Table 03127)
  7407.  00h    WORD    flags (see #03128)
  7408.  02h    DWORD    block size in bytes
  7409. ---DPMI memory block---
  7410.  06h    DWORD    DPMI memory block handle
  7411. ---DOS memory block---
  7412.  06h    WORD    real-mode segment of memory block
  7413.  08h    WORD    selector of memory block
  7414. ---
  7415.  0Ah    DWORD    linear address of memory
  7416.  0Eh    WORD    memory operation error code
  7417.         0008h no more free LDT descriptors
  7418. ---if flags bit 0 clear---
  7419.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  7420.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  7421. ---if flags bit 0 set---
  7422.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  7423.  12h    WORD    unused???
  7424.  
  7425. Bitfields for DPMILOAD memory block flags:
  7426. Bit(s)    Description    (Table 03128)
  7427.  0    set if data segment rather than code segment
  7428.  1    information valid
  7429.  2    set if DOS memory block rather than DPMI memory block
  7430.  4    ???
  7431.  15    set if no LDT selectors for memory block???
  7432. SeeAlso: #03127
  7433. --------E-2FFB42BX0003-----------------------
  7434. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  7435.     AX = FB42h
  7436.     BX = 0003h
  7437. Return: DX:AX = size of largest free block in paragraphs
  7438.         0000h:0000h on error (BC3.0 version only)
  7439. Note:    AX and DX are destroyed on error, but no other error indicator is
  7440.       returned, under the BC++ 2.0 version of DPMILOAD
  7441. SeeAlso: AX=FB42h/BX=0002h
  7442. --------E-2FFB42BX0004-----------------------
  7443. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  7444.     AX = FB42h
  7445.     BX = 0004h
  7446.     DS:DX -> ASCIZ filename of protected-mode executable
  7447. Return: CX = selector of ??? or 0000h
  7448. ---BC3.0---
  7449.     DX = status (0000h,FFF4h,others???) (see #03129)
  7450. Note:    the filename may also be terminated by a CR rather than a NUL under the
  7451.       BC++ 3.0 version of DPMILOAD
  7452.  
  7453. (Table 03129)
  7454. Values for DPMILOAD function status:
  7455.  0000h    successful
  7456.  0001h    ??? failure
  7457.  0002h    invalid selector
  7458.  0004h    unknown error
  7459.  0008h    no more LDT descriptors available???
  7460.  FFDEh    unable to set descriptor
  7461.  FFDFh    unable to get segment base address
  7462.  FFE0h    ???
  7463.  FFF2h    invalid parameter value
  7464.  FFF4h    component of filename too long (name not in 8.3 format)
  7465.  FFF5h    pathname too long (>79 chars)
  7466.  FFF6h    ???
  7467.  FFF8h    ???
  7468.  FFF9h    index out of range
  7469.  FFFAh    ???
  7470.  FFFCh    invalid access to code segment???
  7471.  FFFEh    ???
  7472.  FFFFh    general error
  7473. --------E-2FFB42BX0005-----------------------
  7474. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  7475.     AX = FB42h
  7476.     BX = 0005h
  7477.     CX = selector of DPMILOAD data (see #03130)
  7478.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  7479. Return: DX = status (see #03129)
  7480.         0000h successful
  7481.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7482.         else
  7483.         BX destroyed
  7484. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  7485.  
  7486. Format of DPMILOAD data:
  7487. Offset    Size    Description    (Table 03130)
  7488.  00h 12 BYTEs    ???
  7489.  0Ch    WORD    ??? bit flags
  7490.  0Eh 14 BYTEs    ???
  7491.  1Ch    WORD    number of memory control records (see #03133)
  7492.  1Eh 25 BYTEs    ???
  7493.  37h    BYTE    ??? bit flags
  7494.         bit 4: data valid???
  7495.  38h  4 BYTEs    ???
  7496.  3Ch    WORD    ???
  7497.  3Eh 12 BYTEs    ???
  7498.  46h    BYTE    ??? counter
  7499.  47h    BYTE    ???
  7500.  48h    BYTE    ???
  7501.  49h    BYTE    ???
  7502.  4Ah    WORD    ???
  7503.  4Ch  2 BYTEs    ???
  7504.  4Eh    WORD    offset of array of 64-byte memory control records
  7505.  52h    WORD    offset of name list (see #03131)
  7506.  54h  4 BYTEs    ???
  7507.  58h    WORD    offset of array of 6-byte objects (see #03132)
  7508.  5Ah  8 BYTEs    ???
  7509.  62h  9 BYTEs    ASCIZ name for ???
  7510.  6Bh  9 BYTEs    ASCIZ name for ???
  7511.     ???
  7512.  
  7513. Format of name list entry [array]:
  7514. Offset    Size    Description    (Table 03131)
  7515.  00h    BYTE    length of name (00h if end of array)
  7516.  01h  N BYTEs    name
  7517.  N+1    WORD    1-based index into array of unknown 6-byte objects
  7518.  
  7519. Format of 6-byte objects:
  7520. Offset    Size    Description    (Table 03132)
  7521.  00h    BYTE    ???
  7522.  01h    BYTE    ???
  7523.  02h    BYTE    ???
  7524.  03h    BYTE    1-based index of memory control record
  7525.  04h    WORD    ???
  7526.  
  7527. Format of memory control record:
  7528. Offset    Size    Description    (Table 03133)
  7529.  00h 20 BYTEs    memory block info (see #03127)
  7530.  14h  6 BYTEs    ???
  7531.  1Ah    BYTE    ???
  7532.  1Bh  2 BYTEs    ???
  7533.  1Dh    BYTE    ??? bit flags
  7534.  1Eh 14 BYTEs    ???
  7535.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  7536.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  7537.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  7538.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  7539.  3Ch  4 BYTEs    ???
  7540. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  7541.       the pointers at offsets 34h and 38h
  7542. --------E-2FFB42BX0006-----------------------
  7543. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  7544.     AX = FB42h
  7545.     BX = 0006h
  7546.     CX = selector of DPMILOAD data (see #03130)
  7547.     DX = 1-based index into array of ??? 6-byte objects
  7548. Return: DX = status (see #03129)
  7549.         0000h successful
  7550.         AX:BX -> ??? FAR function (called with two words on top of stk)
  7551.         else
  7552.         BX destroyed
  7553. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  7554. --------E-2FFB42BX0007-----------------------
  7555. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  7556.     AX = FB42h
  7557.     BX = 0007h
  7558.     CX = selector of ???
  7559. Return: ???
  7560. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7561.       as version 1.000, while the version distributed with BC++ 3.0
  7562.       identifies itself as version 1.0; the former is 10864 bytes, the
  7563.       latter 22180 bytes.
  7564. --------E-2FFB42BX0007-----------------------
  7565. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7566.     AX = FB42h
  7567.     BX = 0007h
  7568.     CX = selector of DPMILOAD data (see #03130)
  7569.     ???
  7570. Return: DX = status (see #03129)
  7571.         0000h successful
  7572.         AX = ???
  7573. --------E-2FFB42BX0008-----------------------
  7574. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7575.     AX = FB42h
  7576.     BX = 0008h
  7577.     CX = bit flags
  7578.         bit 2: set if DPMI memory, clear if DOS memory
  7579.     DX = selector of DOS memory block
  7580.     SI:DI = handle of DPMI memory block
  7581. Return: DX = 0000h on error, unchanged if succcessful
  7582. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  7583.       as version 1.000, while the version distributed with BC++ 3.0
  7584.       identifies itself as version 1.0; the former is 10864 bytes, the
  7585.       latter 22180 bytes.
  7586. SeeAlso: AX=FB42h/BX=0002h
  7587. --------E-2FFB42BX0008-----------------------
  7588. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  7589.     AX = FB42h
  7590.     BX = 0008h
  7591.     ES:SI -> memory block info (see #03127)
  7592. Return: ???
  7593. SeeAlso: AX=FB42h/BX=0009h
  7594. --------E-2FFB42BX0009-----------------------
  7595. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  7596.     AX = FB42h
  7597.     BX = 0009h
  7598.     ES:SI -> memory block info (see #03127)
  7599.     ???
  7600. Return: ???
  7601. SeeAlso: AX=FB42h/BX=0008h"3.0"
  7602. --------E-2FFB42BX000A-----------------------
  7603. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  7604.     AX = FB42h
  7605.     BX = 000Ah
  7606.     CX = 0001h
  7607.     DX = ???
  7608.     SI = ???
  7609. Return: after user exits subshell
  7610. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  7611.       function is not available in protected mode.
  7612.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  7613.       version also adds a DPMI host and DOS extender.
  7614. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  7615. --------E-2FFB42BX000B-----------------------
  7616. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  7617.     AX = FB42h
  7618.     BX = 000Bh
  7619. --------E-2FFB42BX000C-----------------------
  7620. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  7621.     AX = FB42h
  7622.     BX = 000Ch
  7623.     ES:SI -> memory block info ??? (see #03127)
  7624. Return: DX = status???
  7625. SeeAlso: AX=FB42h/BX=000Fh
  7626. --------E-2FFB42BX000D-----------------------
  7627. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  7628.     AX = FB42h
  7629.     BX = 000Dh
  7630.     CX = number of words to copy from protected-mode to real mode stack
  7631.     DL = interrupt number
  7632.     DH = flags
  7633.         bit 0: reset the interrupt controller and A20 line
  7634.     ES:DI -> real-mode call structure (see #03148 at INT 31/AX=0300h)
  7635. Return: CX = status
  7636.         0000h successful
  7637.         0001h failed
  7638. SeeAlso: INT 31/AX=0300h
  7639. --------E-2FFB42BX000E-----------------------
  7640. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7641.     AX = FB42h
  7642.     BX = 000Eh
  7643.     DS:DX -> ASCIZ or CR-terminated name of ???
  7644. Return: CX = selector of DPMILOAD data (see #03130) corresponding to name,
  7645.           0000h on error
  7646. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  7647. --------E-2FFB42BX000F-----------------------
  7648. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  7649.     AX = FB42h
  7650.     BX = 000Fh
  7651.     ES:SI -> memory block info (see #03127)
  7652. Return: ???
  7653. SeeAlso: AX=FB42h/BX=000Ch
  7654. --------E-2FFB42BX0010-----------------------
  7655. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  7656.     AX = FB42h
  7657.     BX = 0010h
  7658.     DX = segment number
  7659. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  7660.         0000h successful
  7661.         DX = selector number for descriptor
  7662.         0008h failed
  7663. SeeAlso: AX=FB42h/BX=0023h
  7664. --------E-2FFB42BX0011-----------------------
  7665. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7666.     AX = FB42h
  7667.     BX = 0011h
  7668.     CX = selector of DPMILOAD data (see #03130)
  7669.     ???
  7670. Return: DX = status (0000h,0002h,FFFEh) (see also #03129)
  7671.         0000h successful
  7672.         AX:BX -> ??? name
  7673.         FFFEh ??? error
  7674. --------E-2FFB42BX0012-----------------------
  7675. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7676.     AX = FB42h
  7677.     BX = 0012h
  7678.     CX = selector for ???
  7679. Return: CX = selector for ???
  7680. --------E-2FFB42BX0013-----------------------
  7681. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7682.     AX = FB42h
  7683.     BX = 0013h
  7684.     CX = selector of DPMILOAD data (see #03130)
  7685.     DX = 1-based index of ???
  7686. Return: CX = status (0000h,0002h,FFF9h) (see also #03129)
  7687.         0000h successful
  7688.         BX = ??? or 0000h
  7689.         FFF9h ??? error
  7690. --------E-2FFB42BX0014-----------------------
  7691. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  7692.     AX = FB42h
  7693.     BX = 0014h
  7694.     CX = 0001h
  7695. Return: BX = 0000h if installed
  7696. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7697.       real or V86 mode
  7698. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  7699. --------E-2FFB42BX0015-----------------------
  7700. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  7701.     AX = FB42h
  7702.     BX = 0015h
  7703.     CX = 0001h
  7704. Return: ???
  7705. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7706.       real or V86 mode
  7707. SeeAlso: AX=FB42h/BX=000Ah
  7708. --------E-2FFB42BX0016-----------------------
  7709. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7710.     AX = FB42h
  7711.     BX = 0016h
  7712.     CX = selector of DPMILOAD data (see #03130)
  7713. Return: DX = status (see also AX=FB42h/BX=0004h)
  7714.         0000h successful
  7715.         CX = ???
  7716. --------E-2FFB42BX0017-----------------------
  7717. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7718.     AX = FB42h
  7719.     BX = 0017h
  7720.     CX = ???
  7721.     DX = ???
  7722.     ???
  7723. Return: DX = status (0000h,0001h) (see #03129)
  7724. --------E-2FFB42BX0018-----------------------
  7725. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  7726.     AX = FB42h
  7727.     BX = 0018h
  7728.     CX = ???
  7729. --------E-2FFB42BX0019-----------------------
  7730. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7731.     AX = FB42h
  7732.     BX = 0019h
  7733.     CX = selector for ???
  7734.     ???
  7735. Return: DX = status (see also AX=FB42h/BX=0004h)
  7736.         0000h successful
  7737.         CX = selector for ???
  7738. --------E-2FFB42BX001A-----------------------
  7739. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7740.     AX = FB42h
  7741.     BX = 001Ah
  7742.     CX = selector for ???
  7743.     ???
  7744. Return: DX = status (see also AX=FB42h/BX=0004h)
  7745.         0000h successful
  7746.         0004h failed
  7747.     CX:BX -> ???
  7748. --------E-2FFB42BX001B-----------------------
  7749. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7750.     AX = FB42h
  7751.     BX = 001Bh
  7752.     CX = selector of DPMILOAD data (see #03130)
  7753.     DX = offset of ???
  7754. Return: DX = status (0000h,0002h) (see also #03129)
  7755.         0000h successful
  7756.         BX = selector for ???
  7757.         CX = selector for ???
  7758. --------E-2FFB42BX001C-----------------------
  7759. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7760.     AX = FB42h
  7761.     BX = 001Ch
  7762.     ES = selector for DPMILOAD data (see #03130)
  7763.     CX = 1-based index of ???
  7764.     DX = 1-based index of ???
  7765. Return: DX = status (0000h,0002h,FFF9h) (see #03129)
  7766. --------E-2FFB42BX001D-----------------------
  7767. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7768.     AX = FB42h
  7769.     BX = 001Dh
  7770. Return: CX:DX = ???
  7771. --------E-2FFB42BX001E-----------------------
  7772. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7773.     AX = FB42h
  7774.     BX = 001Eh
  7775.     CX = ???
  7776.     ???
  7777. Return: DX = status (see also AX=FB42h/BX=0004h)
  7778.         0000h successful
  7779.         FFF7h ??? error
  7780.     CX:BX -> ???
  7781. --------E-2FFB42BX001F-----------------------
  7782. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7783.     AX = FB42h
  7784.     BX = 001Fh
  7785.     DS:DX -> 8-character name of ???
  7786.     ???
  7787. Return: CX = selector of DPMILOAD data (see #03130) for ???
  7788.         0000h on error
  7789. SeeAlso: AX=FB42h/BX=000Eh
  7790. --------E-2FFB42BX0020-----------------------
  7791. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  7792.     AX = FB42h
  7793.     BX = 0020h
  7794. Return: DX = ??? (always 0000h)
  7795. --------E-2FFB42BX0021-----------------------
  7796. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  7797.     AX = FB42h
  7798.     BX = 0021h
  7799.     CL = exception number (00h-1Fh)
  7800. Return: DX = status (see also AX=FB42h/BX=0004h)
  7801.         0000h successful
  7802.         AX:BX = selector:offset of handler
  7803.         FFF2h unable to get exception handler vector
  7804. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  7805. --------E-2FFB42BX0022-----------------------
  7806. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  7807.     AX = FB42h
  7808.     BX = 0022h
  7809.     CL = exception number (00h-1Fh)
  7810.     SI:DX = selector:offset of new handler
  7811. Return: DX = status (0000h,0004h,FFF2h) (see #03129)
  7812. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  7813. --------E-2FFB42BX0023-----------------------
  7814. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  7815.     AX = FB42h
  7816.     BX = 0023h
  7817.     CX = selector
  7818. Return: DX = status (see also AX=FB42h/BX=0004h)
  7819.         0000h successful
  7820.         CX = real-mode segment number
  7821.         FFF2h descriptor has invalid base address for real-mode segment
  7822. SeeAlso: AX=FB42h/BX=0010h
  7823. --------E-2FFB42BX0024-----------------------
  7824. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  7825.     AX = FB42h
  7826.     BX = 0024h
  7827.     CL = interrupt number
  7828. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  7829.     AX:BX = selector:offset of handler
  7830. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  7831. --------E-2FFB42BX0025-----------------------
  7832. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  7833.     AX = FB42h
  7834.     BX = 0025h
  7835.     CL = interrupt number
  7836.     SI:DX = selector:offset of new handler
  7837. Return: DX = status (0000h,0004h,FFF2h) (see #03129)
  7838. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  7839. --------E-2FFB42BX0026-----------------------
  7840. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7841.     AX = FB42h
  7842.     BX = 0026h
  7843.     CX = selector of DPMILOAD data (see #03130)
  7844.     DX = 1-based index of ???
  7845.     ???
  7846. Return: DX = status (0000h,0002h,FFF9h) (see #03129)
  7847.         0000h successful
  7848.         BX = offset of ??? within data structure
  7849. --------E-2FFB42BX0027-----------------------
  7850. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7851.     AX = FB42h
  7852.     BX = 0027h
  7853.     CX = selector of DPMILOAD data (see #03130)
  7854.     DX = offset of ???
  7855. Return: DX = status (see also AX=FB42h/BX=0004h)
  7856.         0000h successful
  7857.         BX = ???
  7858. --------E-2FFB42BX0080-----------------------
  7859. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7860.     AX = FB42h
  7861.     BX = 0080h
  7862.     ???
  7863. Return: AX = ???
  7864.     ???
  7865. --------E-2FFB42BX0081-----------------------
  7866. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7867.     AX = FB42h
  7868.     BX = 0081h
  7869.     ???
  7870. Return: AX = ???
  7871.     ???
  7872. --------E-2FFB42BX1001-----------------------
  7873. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  7874.     AX = FB42h
  7875.     BX = 1001h
  7876. Return: BX = 0000h
  7877. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  7878. --------E-2FFB42BX1002-----------------------
  7879. INT 2F U - Borland RTM.EXE 1.0 - EXECUTE COMPILED PROGRAM
  7880.     AX = FB42h
  7881.     BX = 1002h
  7882.     DX = 0014h ???
  7883.     ???
  7884. Return: AX = nonzero if successful
  7885.         AH = child program exit method??? (usually 4Ch)
  7886.         AL = child program exit code (Errorlevel)
  7887.     AX = 0000h on load error
  7888.         DX = error code (0000h-0027h) (see #03134)
  7889. SeeAlso: AX=FB42h/BX=1001h
  7890.  
  7891. (Table 03134)
  7892. Values for RTM.EXE error code:
  7893.  01h    out of memory
  7894.  02h    out of selectors
  7895.  03h    out of internal tables
  7896.  10h    internal error
  7897.  18h    internal error
  7898.  1Ah    internal error
  7899.  1Bh    internal error
  7900.  1Ch    internal error
  7901.  20h    invalid dynamic link
  7902.  21h    internal error
  7903.  22h    unable to open file
  7904.  23h    invalid .EXE format
  7905.  24h    wrong version
  7906.  25h    unable to initialize 
  7907.  26h    DLL initialization error
  7908.  other    unrecognized error
  7909. --------E-2FFB42BX1003-----------------------
  7910. INT 2F U - Borland RTM.EXE 1.0 - ???
  7911.     AX = FB42h
  7912.     BX = 1003h
  7913.     ???
  7914. Return: ???
  7915. SeeAlso: AX=FB42h/BX=1001h
  7916. --------E-2FFB43-----------------------------
  7917. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  7918.     AX = FB43h
  7919.     BX = subfunction (at least 0000h-000Eh)
  7920. Notes:    this function is only present in protected mode; it does nothing but
  7921.       an immediate IRET
  7922.     DPMILOAD.EXE itself calls various subfunctions:
  7923.         subfunction 0004h is called with CX=selector of ???, DI=selector
  7924.           of DPMILOAD data
  7925.         subfunction 0008h is called with CX=selector of DPMILOAD data
  7926. SeeAlso: AX=FB42h/BX=0001h
  7927. --------G-2FFB43BX0100-----------------------
  7928. INT 2F PU - Borland TDX - INSTALLATION CHECK
  7929.     AX = FB43h
  7930.     BX = 0100h
  7931. Return: BX = FB43h if loaded
  7932. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  7933. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  7934.       should install their own stack and general protection exception
  7935.       handlers, or allow TDX to handle those exceptions
  7936. --------a-2FFB64-----------------------------
  7937. INT 2F U - AutoBraille v1.1A - GET ???
  7938.     AX = FB64h
  7939. Return: AX = ??? (0006h seen)
  7940. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7941. --------E-2FFBA1BX0081-----------------------
  7942. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  7943.     AX = FBA1h
  7944.     BX = 0081h
  7945.     ES:DI -> 16-byte buffer
  7946. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  7947. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  7948. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  7949.       extender was moved into DPMILOAD.
  7950. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  7951. SeeAlso: INT 21/AX=4403h"AI Architects"
  7952. --------E-2FFBA1BX0082-----------------------
  7953. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  7954.     AX = FBA1h
  7955.     BX = 0082h
  7956.     ES:DI -> response buffer (see #03135)
  7957. Return: ES:DI buffer filled
  7958. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7959.  
  7960. Format of TKERNEL response buffer:
  7961. Offset    Size    Description    (Table 03135)
  7962.  00h  4 BYTEs    signature "IABH"
  7963.  04h    DWORD    pointer to FAR extender entry point (see #03136)
  7964.  
  7965. (Table 03136)
  7966. Call TKERNEL entry point with:
  7967.     AX = function number
  7968.         0000h initialize???
  7969.         STACK:    WORD  ???
  7970.         Return: AX = status???
  7971.             STACK unchanged
  7972.         0001h get version???
  7973.         Return: AX = 0200h for v2.0.34
  7974.         0002h get ???
  7975.         Return: AX = ??? (011Eh or 0182h seen)
  7976.         0003h load protected-mode executable
  7977.         STACK:    DWORD -> ASCIZ filename of executable
  7978.             DWORD    ???
  7979.             DWORD -> program arguments (counted string plus CR)
  7980.             DWORD -> environment for protected-mode executable
  7981.                 (terminated with two consecutive NULs)
  7982.             DWORD -> WORD buffer for ???
  7983.         Return: AX = status???
  7984.             STACK unchanged
  7985.         0004h get descriptor
  7986.         STACK:    WORD    selector for which to get descriptor
  7987.             WORD    segment number (when running in real mode)
  7988.             DWORD -> buffer for descriptor
  7989.         Return: CF clear if successful
  7990.                 buffer filled
  7991.             CF set on error
  7992.                 AX destroyed???
  7993.             STACK unchanged
  7994.         0005h ???
  7995.         STACK:    WORD    selector for ???
  7996.             WORD    subfunction number???
  7997.                 0000h run previously-loaded program???
  7998.                 0001h ??? (similar to 0000h)
  7999.                 0002h
  8000.                 0003h
  8001.                 0005h ??? (similar to 0000h and 0001h)
  8002.         Return: AX = status???
  8003.             STACK unchanged
  8004.         0006h ???
  8005.         STACK:    WORD ???
  8006.             DWORD -> WORD (call) max iterations of ???
  8007.                       (ret) remaining iterations
  8008.         Return: AX = ???
  8009.             STACK unchanged
  8010.         0007h unused
  8011.         Return: AX = 0001h
  8012.         0008h unused
  8013.         Return: AX = 0001h
  8014.         0009h copy protected-mode memory into conventional memory
  8015.         STACK:    WORD    selector for source segment
  8016.             WORD    segment of source if in real mode???
  8017.             DWORD    offset of source
  8018.             WORD    number of bytes to copy
  8019.             DWORD -> low-memory destination
  8020.         Return: AX = status
  8021.             STACK unchanged
  8022.         000Ah copy conventional memory into protected-mode memory
  8023.         STACK:    WORD    selector for destination segment
  8024.             WORD    segment of destination if in real mode???
  8025.             DWORD    offset of destination
  8026.             WORD    number of bytes to copy
  8027.             DWORD -> low-memory source
  8028.         Return: AX = status
  8029.             STACK unchanged
  8030.         000Bh get ??? pointers
  8031.         STACK:    WORD desired pointer
  8032.                 0000h get ???
  8033.                 0002h get protected-mode CR3
  8034.                 0003h get 4K page table buffer pointer
  8035.                 else Return: DX:AX = FFFFh:FFFFh
  8036.         Return: DX:AX = requested pointer
  8037.             STACK unchanged
  8038.         000Ch set ??? pointers
  8039.         STACK:    WORD desired pointer
  8040.                 0000h set ???
  8041.                 0002h set protected-mode CR3
  8042.                 0003h set 4K page table buffer pointer
  8043.                 else ignore
  8044.             DWORD new value for pointer
  8045.         Return: STACK unchanged
  8046.         000Dh get ??? pointers
  8047.         STACK:    WORD desired pointer
  8048.                 0000h get ???
  8049.                 0001h get ???
  8050.                 0002h get ???
  8051.                 0003h get ???
  8052.                 0004h get ???
  8053.                 0005h get ???
  8054.                 0006h get ???
  8055.                 0007h get ???
  8056.                 else Return: DX:AX = FFFFh:FFFFh
  8057.         Return: DX:AX = desired pointer
  8058.             STACK unchanged
  8059.         000Eh set ??? pointer
  8060.         STACK:    WORD desired pointer
  8061.                 0000h set ???
  8062.                 0001h set ???
  8063.                 0002h set ???
  8064.                 0003h set ???
  8065.                 0004h set ???
  8066.                 0005h set ???
  8067.                 0006h set ???
  8068.                 0007h set ???
  8069.                 else Return: DX:AX = FFFFh:FFFFh
  8070.         Return: STACK unchanged
  8071.         000Fh get ???
  8072.         Return: AX = ??? (seen 0008h)
  8073.         0010h get ???
  8074.         Return: AX = ???
  8075.         0011h determine whether selector is valid
  8076.         STACK:    WORD    possible selector
  8077.         Return: AX = selector or 0000h if invalid
  8078.             STACK unchanged
  8079.         0012h get physical address
  8080.         STACK:    WORD    selector for desired segment
  8081.             WORD    segment number if in real mode
  8082.             DWORD    offset within segment
  8083.         Return: DX:AX = 32-bit physical address or 00000000h on error
  8084.             BX destroyed
  8085.             STACK unchanged
  8086.         0013h ???
  8087.         Note:    normally jumps to code for function 0012h
  8088.         0014h copy protected-mode memory to conventional memory, with ???
  8089.         STACK:    WORD    selector for source segment
  8090.             WORD    segment of source if in real mode???
  8091.             DWORD    offset of source
  8092.             WORD    number of bytes to copy
  8093.             DWORD -> low-memory destination
  8094.         Return: AX = status???
  8095.             STACK unchanged
  8096.         0015h copy conventional memory to protected-mode memory, with ???
  8097.         STACK:    WORD    selector for destination segment
  8098.             WORD    segment of destination if in real mode???
  8099.             DWORD    offset of destination
  8100.             WORD    number of bytes to copy
  8101.             DWORD -> low-memory source
  8102.         Return: AX = status???
  8103.             STACK unchanged
  8104.         0016h set ??? pointer
  8105.         STACK:    WORD    unused
  8106.             DWORD -> ??? or 0000h:0000h
  8107.         Return: AX = 0000h
  8108.             STACK unchanged
  8109.         0017h allocate real-mode procedure???
  8110.         STACK:    DWORD    ASCIZ name of procedure
  8111.             DWORD ???
  8112.             DWORD    address of subroutine to invoke
  8113.         Return: AX = status
  8114.                 0032h procedure by that name exists
  8115.                 0033h no more real-mode procedures available
  8116.             DX destroyed
  8117.             STACK unchanged
  8118.         0018h unused
  8119.         Return: AX = 0001h
  8120.         0019h get parameter block
  8121.         Return: DX:AX -> parameter block (format unknown at this time,
  8122.                   but 92h bytes)
  8123.                   (preceded by signature "!!PARAM-BLOCK!!")
  8124.         001Ah get ???
  8125.         Return: AX = ??? (0148h seen)
  8126.         001Bh free real-mode procedure???
  8127.         STACK:    DWORD -> ASCIZ name of procedure
  8128.         Return: ???
  8129.             STACK unchanged
  8130.         001Ch check whether packets from protected mode task pending
  8131.         Return: AX = 0001h if packets pending, 0000h if not
  8132.         001Dh set ???
  8133.         STACK:    DWORD ??? or 0000h:0000h
  8134.         Return: AX,BX destroyed
  8135.             STACK unchanged
  8136.         001Eh ???
  8137.         STACK:    WORD ??? (high byte ignored)
  8138.             DWORD -> data structure (below)
  8139.         Return: AX,BX,CX,DX destroyed
  8140.             data structure updated
  8141.             STACK unchanged
  8142.         Format of data structure:
  8143.         Offset    Size    Description
  8144.          00h  2 BYTEs    unused
  8145.          02h    WORD    ???
  8146.          04h    WORD    ???
  8147.          06h    WORD    ???
  8148.          08h  2 BYTEs    unused
  8149.          0Ah    WORD    ???
  8150.          0Ch    WORD    (call) ???
  8151.                 (ret) offset of this data structure (BUG?)
  8152.         001Fh set ???
  8153.         STACK:    WORD ??? (set to 0001h if zero)
  8154.         Return: AX destroyed
  8155.             STACK unchanged
  8156.         0020h ???
  8157.         STACK:    DWORD -> ??? (8 bytes of data)
  8158.         Return: AX = ???
  8159.             STACK unchanged
  8160.         0021h ???
  8161.         STACK:    DWORD -> ??? (8 bytes of data)
  8162.             WORD    ???
  8163.             WORD    ???
  8164.         Return: AX = ???
  8165.             STACK unchanged
  8166.         0022h ???
  8167.         STACK:    DWORD -> ??? (8 bytes of data)
  8168.             DWORD -> 4-byte buffer for results
  8169.         Return: AX = ???
  8170.             STACK unchanged
  8171.         0023h ???
  8172.         STACK:    DWORD -> ??? (8 bytes of data)
  8173.         Return: AX = ???
  8174.             STACK unchanged
  8175.         0024h set ???
  8176.         STACK:    WORD ???
  8177.         Return: AX destroyed
  8178.             STACK unchanged
  8179.         0025h get ???
  8180.         Return: AX = ??? (value set with func 0024h)
  8181.         0026h BUG: jumps to hyperspace due to fencepost error
  8182.         FFFFh set DOS memory management functions
  8183.         BX:SI -> FAR routine for allocating DOS memory
  8184.               (called with AH=48h,BX=number of paragraphs to alloc;
  8185.               returns CF clear, AX=segment of allocated memory, or
  8186.                   CF set on error)
  8187.         CX:DI -> FAR routine for freeing DOS memory
  8188.               (called with AH=49h,ES=segment of block to free;
  8189.               returns CF set on error, AX=error code)
  8190.         Note: each of these pointers normally points at INT 21/RETF
  8191.         other Return: AX = 0001h
  8192. Note:    BX may be destroyed by any of the API calls
  8193. --------E-2FFBA1BX0084-----------------------
  8194. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  8195.     AX = FBA1h
  8196.     BX = 0084h
  8197.     ES:DI -> response buffer (see #03137)
  8198. Return: ES:DI buffer filled
  8199. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  8200.  
  8201. Format of TKERNEL response buffer:
  8202. Offset    Size    Description    (Table 03137)
  8203.  00h  4 BYTEs    signature "IABH"
  8204.  04h    WORD    success indicator
  8205.         0001h failed (INT 2F hooked by another program)
  8206.         unchanged if successful
  8207.  06h    WORD    segment of ???
  8208.  08h    WORD    segment of ??? memory block to free if nonzero
  8209.  0Ah    WORD    segment of ??? memory block to free if nonzero
  8210. --------s-2FFBFBES0000-----------------------
  8211. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  8212.     AX = FBFBh
  8213.     ES = 0000h
  8214. Return: ES nonzero if installed
  8215.         ES:BX -> entry point data structure (see #03138)
  8216. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  8217.  
  8218. Format of SoundBlaster entry point data structure:
  8219. Offset    Size    Description    (Table 03138)
  8220.  00h  3 BYTEs    signature "FB "
  8221.  03h    BYTE    driver major version number???
  8222.  04h    DWORD    speech driver entry point (see #03139)
  8223.  08h 24 BYTEs    ???
  8224.  20h  ? BYTEs    data buffer for calling speech driver
  8225.           (can be 117 bytes or more)
  8226.  
  8227. (Table 03139)
  8228. Call SoundBlaster speech driver entry point with:
  8229.     AL = function
  8230.         07h speak a string
  8231.         data buffer (see #03138) contains:
  8232.             BYTE  length of string
  8233.               N BYTEs string to speak
  8234. --------K-2FFD12-----------------------------
  8235. INT 2F - KS/KEYSTKCT.EXE - INSTALLATION CHECK
  8236.     AX = FD12h
  8237. Return: AX = 0093h if installed
  8238.         ES = resident code segment
  8239.         ES:CX -> internal "putbuf" routine
  8240. Program: KS/KEYSTKCT.EXE is a key stacking utility (4DOS KEYSTACK.SYS
  8241.       look-alike) by Martin Gerdes, published in c't 11/1991, which can be
  8242.       loaded as a device driver or as a TSR. It does not emulate 4DOS
  8243.       KSTACK API
  8244. Note:    the default buffer size is 128 keys
  8245. --------N-2FFE00BX4454-----------------------
  8246. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  8247.     AX = FE00h
  8248.     BX = 4454h ("DT")
  8249.     CX = 4B52h ("KR")
  8250.     DX = 4E4Dh ("NM")
  8251. Return: AL = FFh if installed
  8252.        BX = 524Eh ("RM")
  8253.        CX = 4D44h ("MD")
  8254.        DX = 544Bh ("TK")
  8255. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  8256. SeeAlso: AX=FE08h
  8257. --------N-2FFE00BX4454-----------------------
  8258. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  8259.     AX = FE00h
  8260.     BX = 4454h ("DT")
  8261.     CX = 4B52h ("KR")
  8262.     DX = 544Dh ("TM")
  8263. Return: AL = FFh if installed
  8264.        BX = 5254h ("RT")
  8265.        CX = 4D44h ("MD")
  8266.        DX = 544Bh ("TK")
  8267. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  8268. SeeAlso: AX=FE08h
  8269. --------U-2FFE00DI4E55-----------------------
  8270. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  8271.     AX = FE00h
  8272.     DI = 4E55h ("NU")
  8273.     SI = TSR identifier (see #03140)
  8274. Return: SI = TSR reply
  8275.         lowercase version of SI on entry (i.e. SI ORed with 2020h)
  8276.         execpt SMARTCAN v8.0, which returns SI=6673h ('fs')
  8277.     AH = status
  8278.         00h installed but disabled internally
  8279.         01h installed and enabled
  8280.     AL = installed product
  8281.         00h NCACHE-x or DISKREET
  8282.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  8283.         02h NCACHE2 / SMARTCAN
  8284.         45h DISKMON v5 installed
  8285.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  8286.           (see #03141,#03142)
  8287.     CX = segment of resident portion
  8288.         FFFFh if completely loaded high (NCACHE)
  8289.     DI may be destroyed
  8290. ---FILESAVE/EP---
  8291.     DL = ??? (apparently always 00h)
  8292. ---DISKMON---
  8293.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  8294. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  8295.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  8296.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  8297.     to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
  8298. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  8299. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  8300.  
  8301. (Table 03140)
  8302. Values for Norton Utilities TSR identifier:
  8303.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
  8304.  4353h    ("CS") NCACHE-S (v5 only)
  8305.  4443h    ("DC") DISKREET
  8306.  444Dh    ("DM") DISKMON
  8307.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
  8308.  
  8309. Format of DISKMON.INI file:
  8310. Offset    Size    Description    (Table 03141)
  8311. -6Ch 108 BYTEs    (in memory copy only)
  8312.         list of filenames which are always protected:
  8313.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  8314.           MIO.SYS/IO.BIN, COMMAND.COM
  8315.  00h    BYTE    ??? always 01h
  8316.  01h    BYTE    disk light (00h off, 01h on)
  8317.  02h    BYTE    disk protection (00h off, 01h on)
  8318.  03h    BYTE    protected areas
  8319.         01h system area
  8320.         02h files
  8321.         03h system area and files
  8322.         04h entire disk
  8323.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  8324.  05h 27 BYTEs    filename extension list (9 entries)
  8325.         (lowercase, blank padded or = 000000h)
  8326.  20h 240 BYTEs    filename list (20 entries)
  8327.         (lowercase, name and extension blank padded, with '.')
  8328. Note:    CX:0508h -> copy in installed TSR (v5)
  8329.     CX:052Fh -> copy in installed TSR (v6)
  8330.     CX:04E0h -> copy in installed TSR (v7-v8)
  8331.  
  8332. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  8333. Offset    Size    Description    (Table 03142)
  8334.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  8335.  00h    BYTE    drives    A: - H:
  8336.  01h    BYTE    drives    I: - P:
  8337.  02h    BYTE    drives    Q: - X:
  8338.  03h    BYTE    drives    Y: - Z:
  8339.  04h    BYTE    which files to protect
  8340.         00h all files
  8341.         01h all files with extension in list
  8342.         02h all files except those with extension in list
  8343.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  8344.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  8345.  21h    WORD    number of days after which files are purged (0 = never)
  8346.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  8347. Note:    CX:03D2h -> copy in installed TSR (v5)
  8348.     CX:03F5h -> copy in installed TSR (v6)
  8349.     CX:0434h -> copy in installed TSR (v7-v8)
  8350. --------U-2FFE00DX474F-----------------------
  8351. INT 2F - GO! v3.22+ - API
  8352.     AX = FE00h
  8353.     DX = 474Fh ('GO')
  8354.     SI = function number
  8355.         0063h (BCD for '?') installation check
  8356.         0078h (BCD for 'N') non-registered search (two levels only)
  8357.         0082h (BCD for 'R') reserved for registered version
  8358.         0083h (BCD for 'S') reserved for registered version
  8359.         0085h (BCD for 'U') uninstall
  8360.     BX:CX -> buffer (for search functions)
  8361.         buffer filled with search spec, i.e. "APL" to get first
  8362.           directory containing the substring APL, ":\APL" to find
  8363.           the first top-level directory beginning with the letters
  8364.           APL
  8365. Return: BX:CX buffer filled with result (search functions only)
  8366.         result is counted ASCIZ directory name, empty string if
  8367.         no matches (i.e. first byte is length of name, followed by
  8368.         name)
  8369. Program: GO! is a shareware directory locator TSR by Steve Ryckman
  8370. Note:    the application-supplied buffer for the requests and results which
  8371.       BX:CX points at must lie outside the conventional (low-640K)
  8372.       memory, since the TSR swaps memory on pop-up; a common location is
  8373.       the last 96 bytes of the video memory or a UMB
  8374. --------U-2FFE01DI4E55-----------------------
  8375. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  8376.     AX = FE01h
  8377.     DI = 4E55h ("NU")
  8378.     SI = TSR identifier (see #03140)
  8379. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  8380.     AX = status
  8381.         0002h successful (DISKMON, FILESAVE, EP)
  8382.         FE00h successful (NCACHE-x, DISKREET)
  8383. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  8384.       report generated by the programs still indicates the previous state,
  8385.       and DISKMON.INI is not updated
  8386.     apparently has no effect on DISKREET
  8387. SeeAlso: AX=FE00h,AX=FE02h
  8388. --------U-2FFE02DI4E55-----------------------
  8389. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  8390.     AX = FE02h
  8391.     DI = 4E55h ("NU")
  8392.     SI = TSR identifier (see #03140)
  8393. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  8394.     AX = status
  8395.         0004h successful (DISKMON, FILESAVE)
  8396.         FE00h successful (NCACHE-x, DISKREET)
  8397. Notes:    (see also AX=FE01h)
  8398.     this function appears to be unsafe, as the cache buffers are not
  8399.       flushed
  8400. SeeAlso: AX=FE00h,AX=FE01h
  8401. --------U-2FFE03DI4E55-----------------------
  8402. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  8403.     AX = FE03h
  8404.     DI = 4E55h ("NU")
  8405.     SI = TSR identifier (see #03140)
  8406. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  8407.     AX = status
  8408.         0006h successful???
  8409. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  8410.     useful for flushing NCACHE before rebooting
  8411. SeeAlso: AX=FE00h,AX=FE10h
  8412. --------U-2FFE04DI4E55-----------------------
  8413. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  8414.     AX = FE04h
  8415.     DI = 4E55h ("NU")
  8416.     SI = TSR identifier (see #03140)
  8417. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8418.     AX = status
  8419.         0008h successful???
  8420. SeeAlso: AX=FE00h
  8421. --------U-2FFE05DI4E55-----------------------
  8422. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  8423.     AX = FE05h
  8424.     DI = 4E55h ("NU")
  8425.     SI = TSR identifier (see #03140)
  8426. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8427.     AX = status
  8428.         000Ah successful???
  8429. Note:    reportedly dangerous
  8430. SeeAlso: AX=FE00h
  8431. --------N-2FFE08-----------------------------
  8432. INT 2F - PC-NFS ??? - GET ???
  8433.     AX = FE08h
  8434. Return: ES:BX -> ???
  8435. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  8436.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  8437.       to AX=FE00h/DX=544Dh support this function
  8438. SeeAlso: AX=FE00h/BX=4454h
  8439. --------U-2FFE10DI4E55-----------------------
  8440. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  8441.     AX = FE10h
  8442.     DI = 4E55h ("NU")
  8443.     SI = TSR identifier (see #03140)
  8444. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  8445.     AX = status
  8446. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  8447.       detected
  8448. SeeAlso: AX=FE03h
  8449. --------S-2FFEEF-----------------------------
  8450. INT 2F - RTS Control TSR - INSTALLATION CHECK
  8451.     AX = FEEFh
  8452. Return: AX = EFFEh if installed
  8453.         BX = port address
  8454. Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
  8455.       signal on a COM port during disk accesses to avoid losing incoming
  8456.       data
  8457. --------N-2FFF00-----------------------------
  8458. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  8459.     AX = FF00h
  8460. Return: AL = status
  8461.         00h not installed, OK to install
  8462.         01h not installed, not OK to install
  8463.         FFh installed
  8464. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
  8465. --------N-2FFF01-----------------------------
  8466. INT 2F - Topware Network Operating System - GET VERSION
  8467.     AX = FF01h
  8468. Return: AX = version
  8469. SeeAlso: AX=FF00h,AX=FF02h
  8470. --------N-2FFF02-----------------------------
  8471. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  8472.     AX = FF02h
  8473. Return: ES:BX -> version string
  8474. SeeAlso: AX=FF00h,AX=FF01h
  8475. --------N-2FFF10-----------------------------
  8476. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  8477.     AX = FF10h
  8478. Return: AL = status (00h not installed, 01h installed)
  8479. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  8480. --------N-2FFF11-----------------------------
  8481. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  8482.     AX = FF11h
  8483. Note:    this function is only available on workstations, not on the server
  8484. SeeAlso: AX=FF10h,AX=FF12h
  8485. --------N-2FFF12-----------------------------
  8486. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  8487.     AX = FF12h
  8488. Note:    this function is only available on workstations, not on the server
  8489. SeeAlso: AX=FF10h,AX=FF11h
  8490. --------N-2FFF13-----------------------------
  8491. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  8492.     AX = FF13h
  8493.     CL = new state (00h off, 01h on)
  8494. SeeAlso: AX=FF10h
  8495. --------N-2FFF14-----------------------------
  8496. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  8497.     AX = FF14h
  8498. Note:    this function is only available on workstations, not on the server
  8499. SeeAlso: AX=FF10h,AX=FF15h
  8500. --------N-2FFF15-----------------------------
  8501. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  8502.     AX = FF15h
  8503. Note:    this function is only available on workstations, not on the server
  8504. SeeAlso: AX=FF10h,AX=FF14h
  8505. --------N-2FFF16-----------------------------
  8506. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  8507.     AX = FF16h
  8508.     BL = which to set (00h TopShow, FFh TopTerm)
  8509.     CX = destination screen
  8510.         0000h all stations
  8511.         0000h-00FFh (TopTerm only) send to group CL
  8512.         8001h-80FEh send to station CL
  8513. SeeAlso: AX=FF18h
  8514. --------N-2FFF18-----------------------------
  8515. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  8516.     AX = FF18h
  8517. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  8518. --------N-2FFF23-----------------------------
  8519. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  8520.     AX = FF23h
  8521. SeeAlso: AX=FF00h
  8522. --------N-2FFF27-----------------------------
  8523. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  8524.     AX = FF27h
  8525. Return: AL = type (00h complete version, 01h simple version)
  8526.     BL = "show" functions flag (00h disabled, 01h enabled)
  8527. SeeAlso: AX=FF16h,AX=FF18h
  8528. --------D-30---------------------------------
  8529. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  8530.    the CALL 5 entry point does a FAR jump to here
  8531. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  8532.       memory
  8533. SeeAlso: INT 21/AH=26h
  8534. --------V-30---------------------------------
  8535. INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
  8536. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  8537.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  8538.       provide a graphical user interface
  8539. SeeAlso: INT 2F/AX=ACF0h
  8540. --------W-30---------------------------------
  8541. INT 30 P - MS Windows 3.1+ - PROTECTED-MODE CALLBACK
  8542. SeeAlso: INT 20"Windows"
  8543. --------!---Section--------------------------
  8544.